在 mysql 5.5.25 中使用的正确语法不存在

Correct syntax to use in mysql 5.5.25 for not exists

您好,我正在尝试在 powerbuilder 12 中编写游标来获取一些记录。这是我的查询。 我正在尝试从 trninvhdr table 中获取一些不在第二个 table 中的记录。

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 服务器上工作正常,但在程序中它给了我以下错误。

数据库 c0038 SQLSTATE = 3700 MySQL ODBC 5.2 驱动程序 mysql id 5.5.25 您的语法有误。查看与您的 mysql 版本对应的手册,了解在 NOT EXISTS 附近使用的正确语法(SELECT * FROM trninvoiceavailability.... 在第 1 行。

我应该使用什么正确的语法来处理这个查询。

您需要按照以下方式从查询中删除 )-

INV_DATE <= :as_inv_date )AND

应该是INV_DATE <= :as_inv_date AND

我可以在这段代码中看到一个括号...它来自哪里,它的朋友在哪里?

INV_DATE <= :as_inv_date )AND