专业 C 动态 SQL 查询



我必须使用 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 的完整示例。

相关内容

  • 没有找到相关文章

最新更新