【发布时间】:2014-04-18 19:35:05
【问题描述】:
我有一个存储过程,它将其中一个变量设置为 NULL,尽管查询返回结果。
这里是 SP:
CREATE DEFINER=`xxx`@`localhost` PROCEDURE `test`(IN CLIENT_ID INT) 开始 DECLARE BEGIN_RANGE INT 无符号默认值 0; 从客户端中选择 client_id 到 @CLIENT_ID3 中 client_id = CLIENT_ID 限制 1; SET @BEGIN_RANGE =(从计数器中选择 var_value,其中 var_name = 'latest_report_id_summarized' 限制 1); 选择 latest_invoice_id 到 @LATEST_INVOICE_ID 来自 SQL_AuditPro.clients 其中client_id = CLIENT_ID; 结尾当我运行 sp,然后选择结果:
选择@CLIENT_ID3、@BEGIN_RANGE、@LATEST_INVOICE_ID;我明白了:
12345,2342342234,空我也试过了:
CREATE DEFINER=`xxx`@`localhost` PROCEDURE `test`(IN CLIENT_ID INT) 开始 DECLARE BEGIN_RANGE INT 无符号默认值 0; 从客户端中选择 client_id 到 @CLIENT_ID3 其中client_id = CLIENT_ID 限制为1; SET @BEGIN_RANGE =(从计数器中选择 var_value,其中 var_name = 'latest_report_id_summarized' 限制 1); SET @LATEST_INVOICE_ID = (选择 latest_invoice_id from SQL_AuditPro.clients 其中client_id = CLIENT_ID); 结尾同样的结果。显然我不需要 SET @CLIENT_ID3 它只是在那里进行测试。任何想法为什么这不会设置变量?当我自己运行这个查询时,我会得到一个结果,如果我运行:
选择 latest_invoice_id 到 @LATEST_INVOICE_ID 来自 SQL_AuditPro.clients 其中client_id = 12345; 选择@LATEST_INVOICE_ID;我明白了:
2342342234我尝试过声明变量,而不是声明它,看起来这个变量似乎在 SP 完成后超出了范围,而其他两个没有。
感谢您提供的任何帮助。
【问题讨论】:
标签: mysql variables stored-procedures