美文网首页代码世界
Pro*C访问Oracle数据库

Pro*C访问Oracle数据库

作者: CodingCode | 来源:发表于2018-01-22 16:33 被阅读0次

Pro*C访问Oracle数据库的例子

test.pc

$ cat test.pc
#include <stdio.h>

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION ;
    char   hvalue[16];
    char   connectstring[] = "scott/tigerr@orcl";
EXEC SQL END DECLARE SECTION ;

#define DUMP_SQLCA()                                                    \
  {                                                                     \
    printf("******************  DUMP OF SQLCA  ******************\n");  \
    printf("SQLCAID: %s\n",     sqlca.sqlcaid);                         \
    printf("SQLCODE: %d\n",     sqlca.sqlcode);                         \
    printf("SQLERRML: %d\n",    sqlca.sqlerrm.sqlerrml);                \
    printf("SQLERRMC: %s\n",    sqlca.sqlerrm.sqlerrmc);                \
    printf("SQLERRP: %s\n",     sqlca.sqlerrp);                         \
    printf("SQLERRD[0]: %d\n",  sqlca.sqlerrd[0]);                      \
    printf("SQLERRD[1]: %d\n",  sqlca.sqlerrd[1]);                      \
    printf("SQLERRD[2]: %d\n",  sqlca.sqlerrd[2]);                      \
    printf("SQLERRD[3]: %d\n",  sqlca.sqlerrd[3]);                      \
    printf("SQLERRD[4]: %d\n",  sqlca.sqlerrd[4]);                      \
    printf("SQLERRD[5]: %d\n",  sqlca.sqlerrd[5]);                      \
    printf("SQLWARN: %s\n",     sqlca.sqlwarn);                         \
    printf("*****************   END OF SQLCA DUMP  **************\n");  \
  }


#define CHECK_SQL(failure_string)               \
  {                                             \
    if (sqlca.sqlcode != 0) {                   \
      printf("!!!ERROR: %s\n", failure_string); \
      DUMP_SQLCA();                             \
      goto sqlerror;                            \
    }                                           \
  }

main (int argc, char *argv[])
{
    EXEC SQL CONNECT :connectstring;
    CHECK_SQL("Connect failed");

    EXEC SQL SELECT 'ABCD' into :hvalue FROM DUAL;
    CHECK_SQL("Select failed");

    printf("Select Result: [%s]\n", hvalue);

    return 0;

sqlerror:
    return -1;
}

makefile

$ cat makefile 

TARGET=test


$(TARGET): $(TARGET).pc
        proc iname=$(TARGET).pc 
        gcc -o $(TARGET) -I$(ORACLE_HOME)/include $(TARGET).c -L$(ORACLE_HOME)/lib -lclntsh

clean:
        rm -f $(TARGET) $(TARGET).lis $(TARGET).c

运行

$ make
$ ./test
Select Result: [ABCD    ]

相关文章

网友评论

    本文标题:Pro*C访问Oracle数据库

    本文链接:https://www.haomeiwen.com/subject/xozlaxtx.html