我必须使用Pro C执行以下查询以获取输出并将den输出显示给用户。
我尝试了以下代码段:
int count=0;
char query1[100]="select count(code) from customer where customer_type='a';";
EXEC SQL ALLOCATE DESCRIPTOR 'out' ;
EXEC SQL PREPARE statement FROM :query1 ;
EXEC SQL DESCRIBE OUTPUT statement USING DESCRIPTOR 'out' ;
EXEC SQL SET DESCRIPTOR 'out' VALUE 1 TYPE = :data_type,
LENGTH = :data_len, DATA = :count ;
EXEC SQL DECLARE c CURSOR FOR statement ;
EXEC SQL OPEN c ;
EXEC SQL FETCH c INTO DESCRIPTOR 'out' ;
EXEC SQL GET DESCRIPTOR 'out' VALUE 1 :count = DATA;
EXEC SQL CLOSE c ;
printf("%-8d ",count);
但我得到的输出总是0。
我该如何进行正确的输出? 任何人都可以帮助...
答案 0 :(得分:0)
你很可能在那里有一些没有被注意到的错误。
使用EXEC SQL WHENEVER进行一些错误检查。
跳出来的一件事是query1值末尾的分号。如果我没记错的话,Pro * c会对它进行barf。
答案 1 :(得分:0)
我强烈建议不要使用Pro * C动态SQL(Oracle动态SQL方法4)的这种方法,除非你可以避免它。
您需要使用此方法的唯一情况是,当您使用动态生成的SQL并且您不知道将使用多少主机变量时。例如。您不知道SELECT
子句中有多少列。
可以在http://docs.oracle.com/cd/B28359_01/appdev.111/b28427/pc_15ody.htm#i7419找到使用Oracle动态SQL方法4的完整示例。