簡體   English   中英

無法在 Informix 中傳遞變量

[英]Unable to pass variable in Informix

我能夠弄清楚如何使用 SQL 通過 Informix 連接到 Avaya CMS。 以下查詢有效,但是當我嘗試用變量替換“1/01/19”時,出現以下錯誤:“EIX000: (-1205) Invalid month in date”

有效的代碼

select * from Openquery(CMS, 'select * FROM dagent  WHERE ROW_DATE = ''1/01/19'' ');

不起作用的代碼

DECLARE @startDate DATETIME
SET @startDate = '2021-01-21'
select * from Openquery(CMS, 'select * FROM dagent WHERE ROW_DATE = ''+@startDate+'' ');

有誰知道問題可能是什么?

麻煩的是單引號不夠。

你有:

'select * FROM dagent WHERE ROW_DATE = ''+@startDate+'' '
                                       ^^            ^^

在每種情況下,如果您有兩個相鄰的單引號,您也需要第三個。 兩個單引號 map 到一個單引號,因此引用的字符串包含+@startDate+ ,而不是變量的串聯。

你需要:

'select * FROM dagent WHERE ROW_DATE = '''+@startDate+''' '

現在將三元組 map 中的前兩個單引號改為單引號; 第三個終止字符串, +@startDate+變成字符串連接,然后下一個單引號開始一個新的字符串,兩個單引號 map 到一個引號,空格和單引號結束字符串。

如何調試?

  • 將您使用的字符串分配給變量並打印它。

  • 將我建議的字符串分配給一個變量並打印它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM