《Mysql應用mysql心得分享:存儲過程》要點:
本文介紹了Mysql應用mysql心得分享:存儲過程,希望對您有用。如果有疑問,可以聯系我們。
use test; drop table if exists t8; CREATE TABLE t8(s1 INT,PRIMARY KEY(s1)); drop procedure if exists handlerdemo; DELIMITER $$ CREATE PROCEDURE handlerdemo() BEGIN declare xx int default 4; DECLARE oh_no condition for sqlstate '23000'; #DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1; declare exit handler for oh_no set @info='違反主鍵約束'; SET @X=1; INSERT INTO t8 VALUES(1); SET @X=2; INSERT INTO t8 VALUES(1); SET @X=3; END
調用存儲過程MYSQL學習
/* 調用存儲過程*/ CALL handlerdemo(); /* 查看調用存儲過程結果*/ SELECT @X,@info;
心得體會:MYSQL學習
1、語句結束符MYSQL學習
也許mysql是將存儲過程、自定義函數看作一條語句的,因此,存儲過程里多條語句用“;”隔開,為了避免沖突,就要用delimiter 重新定義結束符.MYSQL學習
一般可以在存儲過程開始前,定義新的結束符,如MYSQL學習
delimiter //MYSQL學習
存儲過程書寫完畢以后,再恢復定義:delimiter ;MYSQL學習
但也可以在存儲過程開始前,這樣寫 delimiter $$,但存儲過程后不可以再寫別的語句了.如上面的例子MYSQL學習
2、變量MYSQL學習
mysql的變量,跟SQL SERVER一樣,形如 @X ,但無需聲明,直接使用.MYSQL學習
而在存儲過程里面,變量無須用 @,但要聲明.并且聲明要放在存儲過程的頭部(?),如本例,否則報錯.真奇怪啊,一方面,有時候變量無須聲明就可以使用,另一方面,有時候又要限定聲明位置,令人無所適從,似乎隨便了點.MYSQL學習
存儲過程內部的變量,作用范圍僅限于存儲過程.但那些帶@的變量,卻仿佛可以跨越會話和連接,看上去是全局變量?如上面的例子.MYSQL學習
3、條件和處理MYSQL學習
定義條件,是為了給處理調用.如上面的例子:MYSQL學習
DECLARE oh_no condition for sqlstate '23000'; #DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1; declare exit handler for oh_no set @info='違反主鍵約束';
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/3462.html