proc动态SQL查询

proc动态SQL查询,sql,oracle,plsql,sqlplus,oracle-pro-c,Sql,Oracle,Plsql,Sqlplus,Oracle Pro C,我必须使用proc执行以下查询以获取输出并向用户显示输出 我尝试了以下代码段: 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

我必须使用proc执行以下查询以获取输出并向用户显示输出

我尝试了以下代码段:

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

如何获得正确的输出??
有人能帮忙吗请…

很可能你有一些没有被注意到的错误

随时使用execsql进行一些错误检查


我突然想到的一件事是query1值末尾的分号。如果我没记错的话,Pro*c会吐出来。

我强烈建议不要使用这种Pro*c动态SQL方法(Oracle动态SQL方法4),除非您可以避免

您应该使用此方法的唯一情况是,当您使用动态生成的SQL时,您不知道将使用多少主机变量。例如,您不知道
SELECT
子句中将包含多少列


关于使用Oracle dynamic SQL方法4的完整示例,请访问。

int data_type=4,data_len=1;请检查您的标签:不适用于Pro-C。您确定这个问题是针对MySQL的吗?谢谢。。我已经换了标签。。我在代码中哪里出错了。。??或者我遗漏了什么???这里没有涉及PL/SQL,它与SQL*Plus无关。为什么要重新添加这些标签?