Pro C 动态 SQL 查询
Posted
技术标签:
【中文标题】Pro C 动态 SQL 查询【英文标题】:Pro C dynamic SQL query 【发布时间】:2014-12-23 10:36:58 【问题描述】:我必须使用 Pro C 执行以下查询以获取输出并将输出显示给用户。
我尝试了以下代码sn-p:
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。
我该如何继续获得正确的输出? 谁能帮忙...
【问题讨论】:
int data_type = 4, data_len = 1 ;也被声明了 请检查您的标签:proc 不适用于 Pro-C。你确定这个问题是针对 mysql 的吗? 谢谢..我已经更改了标签..我在哪里出错了..??还是我错过了什么??? 这里不涉及PL/SQL,与SQL*Plus无关。为什么要重新添加这些标签? 【参考方案1】:很可能你有一些没有引起注意的错误。
使用 EXEC SQL WHENEVER 进行一些错误检查。
让我印象深刻的一件事是 query1 值末尾的分号。如果我没记错的话,Pro*c 会吐出来的。
【讨论】:
【参考方案2】:我强烈建议不要使用这种 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 的完整示例。
【讨论】:
以上是关于Pro C 动态 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章