我有一個存儲過程,即將其中一個變量設置爲NULL,儘管查詢返回結果。MySQL存儲過程變量返回NULL
這裏是SP:
CREATE DEFINER=`xxx`@`localhost` PROCEDURE `test`(IN CLIENT_ID INT) BEGIN DECLARE BEGIN_RANGE INT UNSIGNED DEFAULT 0; select client_id into @CLIENT_ID3 from clients where client_id = CLIENT_ID limit 1; SET @BEGIN_RANGE = (select var_value from counter where var_name = 'latest_report_id_summarized' limit 1); SELECT latest_invoice_id into @LATEST_INVOICE_ID from SQL_AuditPro.clients where client_id = CLIENT_ID; END
當我運行的SP,然後選擇結果:
select @CLIENT_ID3,@BEGIN_RANGE,@LATEST_INVOICE_ID;
我得到:
12345,2342342234,NULL
我也曾嘗試:
CREATE DEFINER=`xxx`@`localhost` PROCEDURE `test`(IN CLIENT_ID INT) BEGIN DECLARE BEGIN_RANGE INT UNSIGNED DEFAULT 0; select client_id into @CLIENT_ID3 from clients where client_id = CLIENT_ID limit 1; SET @BEGIN_RANGE = (select var_value from counter where var_name = 'latest_report_id_summarized' limit 1); SET @LATEST_INVOICE_ID = (SELECT latest_invoice_id from SQL_AuditPro.clients where client_id = CLIENT_ID); END
同樣的結果。顯然,我不需要SET @ CLIENT_ID3它只是在那裏進行測試。任何想法爲什麼這不會設置變量?當我本身運行此查詢我得到的結果,如果我跑:
SELECT latest_invoice_id into @LATEST_INVOICE_ID from SQL_AuditPro.clients where client_id = 12345; select @LATEST_INVOICE_ID;
我得到:
2342342234
我曾嘗試聲明變量,沒有宣佈它,它只是看起來這個變量在SP完成後似乎超出了範圍,但其他兩個卻沒有。
感謝所有幫助您可以提供。