在最近在通過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、流程控制語句、局部變量只能用於函數、存儲過程內部、游標、觸發器的定義內部。