1.情景展示
我們可以看到,在SQLyog中,選中存儲過程,沒有運行存儲過程的選項,那該如何執行存儲過程?
2.具體分析
我們無法像在Navicat當中那樣,直接運行:
只能用最原始的調用存儲過程的方法:call。
3.解決方案
關於存儲過程的調用,這里,又可以分為3種情況:
情形一:只有入參,沒有返回參數;
語法:
call 存儲過程名稱('參數值1','參數值2',...)
情形二:既有入參,又有出參;
語法:
call 存儲過程名稱('參數值1','參數值2',...,'出參1','出參2',...);
出參使用@+變量名接收,變量可以使用同一個(充當占位符?,用於接收存儲過程返回的數據)。
該存儲過程有3個入參,14個出參;
查看代碼
CALL pro_epidemic_statistics (
'2022-01-01',
'2022-02-18',
'410425105',
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result,
@result
)
說明:如果存儲過程有出參的話,必須用@+變量名的方式進行接收。
即使,名稱與返回列名保持一致也不行。
另外的話,我們知道@+變量名的形式,是用戶變量;
但是,不適用於上面這樣接收存儲過程返回值的情況,存儲過程執行后,@result的值為null,而不是一個結果集。
情形三:沒有入參,也沒出參。
沒有遇到,應該是直接:call 存儲過程名稱()。