【问题标题】:Pro C dynamic SQL queryPro C 动态 SQL 查询
【发布时间】: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无关。为什么要重新添加这些标签?

标签: sql oracle plsql sqlplus oracle-pro-c


【解决方案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 的完整示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 2010-09-20
      • 2015-09-20
      • 2017-01-11
      相关资源
      最近更新 更多