mysql心得分享:存儲(chǔ)過(guò)程
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
調(diào)用存儲(chǔ)過(guò)程
/* 調(diào)用存儲(chǔ)過(guò)程*/ CALL handlerdemo(); /* 查看調(diào)用存儲(chǔ)過(guò)程結(jié)果*/ SELECT @X,@info;
心得體會(huì):
1、語(yǔ)句結(jié)束符
也許mysql是將存儲(chǔ)過(guò)程、自定義函數(shù)看作一條語(yǔ)句的,因此,存儲(chǔ)過(guò)程里多條語(yǔ)句用“;”隔開(kāi),為了避免沖突,就要用delimiter 重新定義結(jié)束符。
一般可以在存儲(chǔ)過(guò)程開(kāi)始前,定義新的結(jié)束符,如
delimiter //
存儲(chǔ)過(guò)程書(shū)寫(xiě)完畢以后,再恢復(fù)定義:delimiter ;
但也可以在存儲(chǔ)過(guò)程開(kāi)始前,這樣寫(xiě) delimiter $$,但存儲(chǔ)過(guò)程后不可以再寫(xiě)別的語(yǔ)句了。如上面的例子
2、變量
mysql的變量,跟SQL SERVER一樣,形如 @X ,但無(wú)需聲明,直接使用。
而在存儲(chǔ)過(guò)程里面,變量無(wú)須用 @,但要聲明。并且聲明要放在存儲(chǔ)過(guò)程的頭部(?),如本例,否則報(bào)錯(cuò)。真奇怪啊,一方面,有時(shí)候變量無(wú)須聲明就可以使用,另一方面,有時(shí)候又要限定聲明位置,令人無(wú)所適從,似乎隨便了點(diǎn)。
存儲(chǔ)過(guò)程內(nèi)部的變量,作用范圍僅限于存儲(chǔ)過(guò)程。但那些帶@的變量,卻仿佛可以跨越會(huì)話(huà)和連接,看上去是全局變量?如上面的例子。
3、條件和處理
定義條件,是為了給處理調(diào)用。如上面的例子:
DECLARE oh_no condition for sqlstate '23000'; #DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1; declare exit handler for oh_no set @info='違反主鍵約束';
- mysql中存儲(chǔ)過(guò)程、函數(shù)的一些問(wèn)題
- mysql 查詢(xún)數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)的語(yǔ)句
- 深入mysql創(chuàng)建自定義函數(shù)與存儲(chǔ)過(guò)程的詳解
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)以及函數(shù)、存儲(chǔ)過(guò)程的介紹
- Mysql存儲(chǔ)過(guò)程和函數(shù)區(qū)別介紹
- Mysql存儲(chǔ)過(guò)程循環(huán)內(nèi)嵌套使用游標(biāo)示例代碼
- mysql 存儲(chǔ)過(guò)程輸入輸出參數(shù)示例
- Mysql存儲(chǔ)過(guò)程中游標(biāo)的用法實(shí)例
- MySQL存儲(chǔ)過(guò)程的異常處理方法
- MySQL存儲(chǔ)過(guò)程中實(shí)現(xiàn)執(zhí)行動(dòng)態(tài)SQL語(yǔ)句的方法
- MySql存儲(chǔ)過(guò)程與函數(shù)詳解
相關(guān)文章
MySQL將版本由5.7.37更新到5.7.39的實(shí)現(xiàn)方式
這篇文章主要介紹了MySQL將版本由5.7.37更新到5.7.39的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解決方法[已測(cè)
為了服務(wù)器更好的安全特將mysql服務(wù)器同步一下,show slave status\G出現(xiàn)了Slave_IO_Running: No 錯(cuò)誤,特整理了下,方便以后配置2011-06-06
MySQL之高可用集群部署及故障切換實(shí)現(xiàn)
這篇文章主要介紹了MySQL之高可用集群部署及故障切換實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
mysql中DATE_FORMAT()函數(shù)的具體使用
在MySQL中,DATE_FORMAT()函數(shù)用于將日期/時(shí)間類(lèi)型的值按照指定的格式進(jìn)行格式化輸出,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
MySQL快速?gòu)?fù)制數(shù)據(jù)庫(kù)數(shù)據(jù)表的方法
有些時(shí)候,我們?yōu)榱丝焖俅罱ㄒ粋€(gè)測(cè)試環(huán)境,或者說(shuō)是克隆一個(gè)網(wǎng)站,需要復(fù)制已經(jīng)存在的mysql數(shù)據(jù)庫(kù)。下面小編給大家介紹mysql快速?gòu)?fù)制數(shù)據(jù)庫(kù)數(shù)據(jù)表的方法,小伙伴們跟著小編一起學(xué)習(xí)吧2015-10-10

