こんにちは私はいくつかのレコードを取得するためにカーソルをpowerbuilder 12に書き込もうとしています。ここは私の質問です。 trninvhdrテーブルから2番目のテーブルにないレコードを取得しようとしています。mysql 5.5.25で使用する正しい構文が存在しないため
SELECT
INV_DATE,
INV_NO,
INV_TYPE,
CUR_CODE,
EXCH_RATE,
usd_rate,
CR_TERM,
DUE_DATE,
bl_date,
TOT_AMT
FROM trninvhdr
WHERE
COMP_CODE ='NFL1' AND
CUST_CODE = 'NLML' AND
INV_TYPE ='F' AND
INV_DATE <= '2016-03-25' AND
NOT EXISTS
(SELECT * FROM trninvoiceavailability WHERE trninvoiceavailability.COMP_CODE = trninvhdr.COMP_CODE
AND trninvoiceavailability.INV_TYPE = trninvhdr.INV_TYPE AND trninvoiceavailability.INV_NO = trninvhdr.INV_NO);
ここではどのようにプログラムで使用しますか。
DECLARE lc_retrieve CURSOR FOR
SELECT
trninvhdr.INV_DATE,
trninvhdr.INV_NO,
trninvhdr.INV_TYPE,
trninvhdr.CUR_CODE,
trninvhdr.EXCH_RATE,
trninvhdr.usd_rate,
trninvhdr.CR_TERM,
trninvhdr.DUE_DATE,
trninvhdr.bl_date,
trninvhdr.TOT_AMT
FROM trninvhdr
WHERE
COMP_CODE = :as_comp_code AND
CUST_CODE = :as_cust_code AND
INV_TYPE ='F' AND
INV_DATE <= :as_inv_date)AND
NOT EXISTS (SELECT * FROM trninvoiceavailability
WHERE trninvoiceavailability.COMP_CODE = trninvhdr.COMP_CODE
AND trninvoiceavailability.INV_TYPE = trninvhdr.INV_TYPE AND
trninvoiceavailability.INV_NO = trninvhdr.INV_NO);
open lc_retrieve ;
クエリはmysqlサーバーで正常に動作しますが、prograでは次のエラーが表示されます。
データベースc0038 SQLSTATE = 3700 MySQL ODBC 5.2 aドライバmysql id 5.5.25構文に誤りがあります。あなたのmysqlバージョンに対応するマニュアルをチェックして正しい構文がNOT EXISTS(SELECT * FROM trninvoiceavailability ... 1行目)の近くで使用できることを確認してください。
このクエリを動作させるのに使う正しい構文は何ですか?
あたりbelow-INV_DATE <= :as_inv_date)AND
としてクエリから削除する必要が
ねえ、私はそれを逃した。それを指摘してくれてありがとう。あなたは私の一日を救った。 – chathwind
私の喜び。それは新構文ですが、それを抱きしめていたので、それを見るのにはしばらく時間がかかりました。 – Harry