我必须使用 Pro C 执行以下查询来获取输出并向用户显示输出。
我尝试了以下代码片段:
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。
我该如何继续获得正确的输出?任何人都可以帮忙请...
未被注意到的错误。
随时使用 EXEC SQL 进行一些错误检查。
让我跳出的一件事是 query1 值末尾的分号。 如果我没记错的话,Pro*c会在上面吠叫。
我强烈建议不要使用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 的完整示例。