Pro*C/C++连ORACLE数据的问题 执行到EXEC SQL connect :BUREAUDB/BUREAUDB@orcl;这句就不往下执行了。

wg5002_bureau$BurToEmosInter
wg5002_bureau$CONTEXT ALLOCATE
Begining TConnectDB
Let's ENABLE THREADS
Let's CONTEXT ALLOCATE
CONTEXT USE
[ConnectDb.ecpp, 55]username=BUREAUDB,passwd=BUREAUDB,dbserver=orcl
[ConnectDb.ecpp, 56]starting EXEC SQL
[ConnectDb.ecpp, 57]EXEC SQL connect :BUREAUDB/BUREAUDB@orcl;

sqlplus是可以连的:
wg5002_bureau$sqlplus BUREAUDB/BUREAUDB@orcl

SQL*Plus: Release 11.2.0.1.0 Production on Tue Apr 17 18:33:17 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from dual;

DU
--
X

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
wg5002_bureau$

然后用一个小测试程序测试也可以连接数据库:

wg5002_bureau$pwd
/u1/tmn/xiehp/bin
wg5002_bureau$ls
test.pc
wg5002_bureau$proc iname=test.pc

Pro*C/C++: Release 11.2.0.1.0 - Production on Tue Apr 17 18:23:52 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

System default option values taken from: /app/oracle/product/11.2.0/db_1/precomp/admin/pcscfg.cfg

wg5002_bureau$gcc -o test test.c -I${ORACLE_HOME}/precomp/public/ -L{$ORACLE_HOME}/lib -l clntsh
wg5002_bureau$./test
username=BUREAUDB,passwd=BUREAUDB
starting EXEC SQL
EXEC SQL connected
num = 1
wg5002_bureau$
wg5002_bureau$more test.pc
int main() {
EXEC SQL BEGIN DECLARE SECTION;
char username[50];
char passwd[50];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;
int num;
strcpy(username,"BUREAUDB");
strcpy(passwd,"BUREAUDB");
printf("username=%s,passwd=%s\n",username,passwd);
printf("starting EXEC SQL\n");
EXEC SQL connect :username identified by :passwd;
printf("EXEC SQL connected\n");
EXEC SQL SELECT COUNT(*) INTO :num FROM dual;
printf("num = %d\n", num);
EXEC SQL COMMIT WORK RELEASE;
return 0;
}
wg5002_bureau$

代码片段如图片

第1个回答  2012-04-17
因为你没有指明连接的数据库,应该如下格式:
EXEC SQL CONNECT :sUserName IDENTIFIED BY :sPassword USING :sDatabaseName;本回答被提问者采纳
第2个回答  2012-04-24
错误:在第二层,第三层选择嵌套SELECT语句(INSERT语句的第一层)p_session_id字段不存在。
集团子句错误二:在SELECT语句中的第三层包含一个mmt.transaction_id总结,mmt.transaction_type_id,mmt.primary_quantity选择这两个领域;
解码(mmt.transaction_type_id,80,0,mmt.primary_quantity)总group子句在select语句错误二:第三层是没有的,但它出现在选择;

SUM函数是总组条款,成千上万的数据有什么奇怪的!或检查检查语句的逻辑结构。
相似回答