begin-end語句塊在mysql中的使用問題


在最近在通過navicate連接mysql數據庫時,進行查詢操作:

delimiter $$
BEGIN

SET @a=1;

if (@a > 0) THEN
SELECT COUNT(*) from tb_public_effect_tmp;
ELSE
SELECT * from tb_effect_master;
end if;

END $$

delimiter ;

直接報錯[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @a =1

開始以為變量定義或者是if else語句出錯,最后確定變量定義和if else語句都是沒有錯的。

后來發現以上語句在觸發器或者存儲過程中是可以正確執行的。

查看相關文檔和網上資料中得知:

通常begin-end用於定義一組語句塊,在各大數據庫中的客戶端工具中可直接調用,但在mysql中不可用。

begin-end、流程控制語句、局部變量只能用於函數、存儲過程內部、游標、觸發器的定義內部。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM