쿼리 결과를 반환하지만 변수 중 하나를 NULL로 설정하는 저장된 proc 파일이 있습니다.MySQL의 저장된 프로 시저 변수가 NULL을 반환합니다.
select @CLIENT_ID3,@BEGIN_RANGE,@LATEST_INVOICE_ID;
내가 얻을 : 나는 또한 시도
12345,2342342234,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입니다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
같은 결과입니다. 분명히 테스트를 위해 거기에있는 @ CLIENT_ID3을 SET 할 필요가 없습니다. 이 아이디어가 변수를 설정하지 않는 이유는 무엇입니까? 나는 그 자체로이 쿼리를 실행하면 나는 결과를 얻을, 나는 실행하는 경우 :
SELECT latest_invoice_id into @LATEST_INVOICE_ID from SQL_AuditPro.clients where client_id = 12345; select @LATEST_INVOICE_ID;
내가 얻을 : 나는 그것을 선언, 변수를하지 선언 시도
2342342234
, 그리고 그냥 SP가 완료된 후에이 변수가 범위를 벗어나는 것처럼 보이지만 다른 두 변수는 그렇지 않습니다.
도움을 주셔서 감사합니다.