0

というテーブルがありますroom_table

room_no room_status  room_type
-------|-----------|----------
1001   | A         |single
1002   | A         |single
1003   | B         |single

CICS COBOL プログラムで次のコードを使用していますが、SQL を取得していますerror code -811

    select room_no 
    from room_table 
    where room_status='A' 
      and room_type ='single'
    fetch first 1 row only

カーソルの概念も使用しましたが、戻りますerror code -311

何か案が?

4

3 に答える 3

1

これは以前に答えられたでしょうが:

  1. カーソルを使用して最初のレコードのみをフェッチします。カーソルを参照してください
  2. グループ化を使用
       
     room_table から min(room_no) を選択
      room_status='A' および room_type ='single'
     room_status でグループ化
于 2014-04-26T22:30:21.293 に答える
0

DB2 Fetch-first-clauseを使用してみましたか?

select first 1 row onlyと置き換えますfetch first row only

于 2014-04-26T22:44:39.687 に答える
0

-311 は -811 ではありません: ホスト変数に問題があります。

-811 の場合、「最初の行のみをフェッチ」します。

今、

この機能が利用可能になる前は、多くのコーダーは IBM の警告を無視し、-811 を OK として単純に許可していました。これは、何らかの形で常に値が返されていたためです (保証はありませんが)。そのようなコードが長い間修正されていることを願っています。

于 2015-03-29T17:33:03.903 に答える