sql - 嵌入式 SQL - 没有输出?

标签 sql c

我正在做一项学习用 C 编写的嵌入式 SQL 的作业。前五个查询工作正常,但现在我似乎被卡住了。我没有得到关于这个的任何输出,即使它的结构与之前的查询完全相同。我可能只是错过了一些愚蠢的东西。想法?

[ed] 下面是应该从查询中得到的表。其中有空值,我收到 SQL 错误 -305 需要空指示器。

FIRST_NAME MIDDLE_NAME LAST_NAME            BRANCH_NO
---------- ----------- -------------------- ---------
III        -           AAAAA                1000     
KKK        -           BBB                  1000     
MMM        -           CC                   3000     
K          PP          DDD                  3000     
IIIII      SSS         DDDDD                3000     
JJJ        QQ          EEE                  3000     
JJJ        PP          GGG                  1000     
K          -           GGG                  1000     
MEI        -           JIANG                3000     
JASPER     CHIACHUN    WENG                 1000     

  10 record(s) selected.

[/ed]

void query6()
{
  // SQL Query Definition
  EXEC SQL
    DECLARE c6 CURSOR FOR
      SELECT s.first_name, s.middle_name, s.last_name, b.branch_no
      FROM staff AS s, branch AS b
      WHERE s.allocated_to = b.branch_no AND
            s.allocated_to IN (SELECT branch_no 
                               FROM branch
                               WHERE city = 'HAMILTON')
      ORDER BY s.last_name, s.first_name, s.middle_name;

  // Pretty Output
  printf("\n%-15s %-15s %-15s %-15s\n",
         "FIRST_NAME","MIDDLE_NAME","LAST_NAME","BRANCH_NO");
  printf("%-15s %-15s %-15s %-15s\n",
         "----------","-----------","---------","---------");

  // Fetch SQL Result and Print
  EXEC SQL OPEN c6;
  while(1)
  {
    printf("fetch\n");
    EXEC SQL FETCH c6 INTO :sqlBuffer1,
                           :sqlBuffer2,
                           :sqlBuffer3,
                           :sqlBuffer4;
    depad(sqlBuffer1);
    depad(sqlBuffer2);
    depad(sqlBuffer3);
    depad(sqlBuffer4);
    if (SQLCODE!=0) break;
    printf("%-15s %-15s %-15s %-15s\n",
           sqlBuffer1,sqlBuffer2,sqlBuffer3,sqlBuffer4);
  }
  EXEC SQL CLOSE c6;
  printf("\n");

  return;         
}

最佳答案

这似乎是正确的,但我可能会这样写:

  SELECT s.first_name, s.middle_name, s.last_name, b.branch_no
  FROM staff AS s, (SELECT branch.branch_no FROM branch WHERE branch.city = 'HAMILTON') AS b
  WHERE s.allocated_to = b.branch_no
  ORDER BY s.last_name, s.first_name, s.middle_name;

关于sql - 嵌入式 SQL - 没有输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532019/

相关文章:

java - jOOQ - dao - 插入对象的主键

mysql - 这个 SQL 语句有更高效的版本吗?

sql - 如何在 SQL 中制作对数直方图?

C:对内联函数的 undefined reference

c - IRC(Twitch 聊天)文本转语音

html - Bootstrap 3 : nested columns stacked on desktop, 在移动设备上内联

sql - 使用 SQL Loader 和 perl 导入 csv 错误

C 编程动态数组

c++ - 此套接字选择代码有什么问题?

c - fread 函数如何从 stdin 获取输入