如何使用cics和cobol程序在DB2中获取一条记录

如何使用cics和cobol程序在DB2中获取一条记录,db2,cobol,cics,Db2,Cobol,Cics,我有一张桌子叫room\u table room_no room_status room_type -------|-----------|---------- 1001 | A |single 1002 | A |single 1003 | B |single 我在CICS COBOL程序中使用以下代码,但我得到的是SQL错误代码-811 select room_no from room_table w

我有一张桌子叫
room\u table

room_no room_status  room_type
-------|-----------|----------
1001   | A         |single
1002   | A         |single
1003   | B         |single
我在CICS COBOL程序中使用以下代码,但我得到的是SQL
错误代码-811

    select room_no 
    from room_table 
    where room_status='A' 
      and room_type ='single'
    fetch first 1 row only
我也使用了游标概念,但它返回
错误代码-311


有什么想法吗?

这以前可能会得到回答,但是:

  • 使用游标并仅获取第一条记录,请参阅
  • 使用“分组依据”
  • 从房间表中选择最小值(房间编号) 其中房间状态为A,房间类型为单人房 按房间分组\u状态 您尝试过使用DB2吗


    仅选择第一行
    替换为
    仅获取第一行

    -311不是-811:主机变量有问题

    对于-811,我们将“仅获取第一行”

    现在,


    在这个特性可用之前,许多编码人员忽略了IBM的警告,只允许-811作为OK,因为总是以某种方式返回一个值(尽管没有保证)。我希望任何这样的代码早就被修改过。

    除了您的语句在语法上不正确(select first…子句无效)之外,它不可能导致SQLCODE-811或-311。同意,通过SPUFI或QMF运行它进行检查-311来自光标(我们在这里没有看到)。在上面的评论之后,Q被编辑了。您是在测试SQLCODE还是它被移动到的变量?搬家了吗?你不应该只在第一排得到a-811。你选择什么?此查询是否已被改写?抱歉,我仅使用了fetch前1行 Select min(room_no) from room_table where room_status='A' and room_type ='single' group by room_status