0

我必须使用 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。

我将如何继续获得正确的输出?任何人都可以帮助请...

4

2 回答 2

0

很可能你有一些没有引起注意的错误。

使用 EXEC SQL WHENEVER 进行一些错误检查。

让我印象深刻的一件事是 query1 值末尾的分号。如果我没记错的话,Pro*c 会吐槽它。

于 2015-01-17T03:58:30.093 回答
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 的完整示例。

于 2015-08-25T16:01:52.990 回答