mysql心得分享:存儲(chǔ)過程
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ǔ)過程
/* 調(diào)用存儲(chǔ)過程*/ CALL handlerdemo(); /* 查看調(diào)用存儲(chǔ)過程結(jié)果*/ SELECT @X,@info;
心得體會(huì):
1、語句結(jié)束符
也許mysql是將存儲(chǔ)過程、自定義函數(shù)看作一條語句的,因此,存儲(chǔ)過程里多條語句用“;”隔開,為了避免沖突,就要用delimiter 重新定義結(jié)束符。
一般可以在存儲(chǔ)過程開始前,定義新的結(jié)束符,如
delimiter //
存儲(chǔ)過程書寫完畢以后,再恢復(fù)定義:delimiter ;
但也可以在存儲(chǔ)過程開始前,這樣寫 delimiter $$,但存儲(chǔ)過程后不可以再寫別的語句了。如上面的例子
2、變量
mysql的變量,跟SQL SERVER一樣,形如 @X ,但無需聲明,直接使用。
而在存儲(chǔ)過程里面,變量無須用 @,但要聲明。并且聲明要放在存儲(chǔ)過程的頭部(?),如本例,否則報(bào)錯(cuò)。真奇怪啊,一方面,有時(shí)候變量無須聲明就可以使用,另一方面,有時(shí)候又要限定聲明位置,令人無所適從,似乎隨便了點(diǎn)。
存儲(chǔ)過程內(nèi)部的變量,作用范圍僅限于存儲(chǔ)過程。但那些帶@的變量,卻仿佛可以跨越會(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ǔ)過程、函數(shù)的一些問題
- mysql 查詢數(shù)據(jù)庫中的存儲(chǔ)過程與函數(shù)的語句
- 深入mysql創(chuàng)建自定義函數(shù)與存儲(chǔ)過程的詳解
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲(chǔ)過程的介紹
- Mysql存儲(chǔ)過程和函數(shù)區(qū)別介紹
- Mysql存儲(chǔ)過程循環(huán)內(nèi)嵌套使用游標(biāo)示例代碼
- mysql 存儲(chǔ)過程輸入輸出參數(shù)示例
- Mysql存儲(chǔ)過程中游標(biāo)的用法實(shí)例
- MySQL存儲(chǔ)過程的異常處理方法
- MySQL存儲(chǔ)過程中實(shí)現(xiàn)執(zhí)行動(dòng)態(tài)SQL語句的方法
- MySql存儲(chǔ)過程與函數(shù)詳解
相關(guān)文章
淺談MySQL查詢出的值為NULL和N/A和空值的區(qū)別
本文主要介紹了淺談MySQL查詢出的值為NULL和N/A和空值的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Mysql數(shù)據(jù)庫存儲(chǔ)過程基本語法講解
本文通過一個(gè)實(shí)例來給大家講述一下Mysql數(shù)據(jù)庫存儲(chǔ)過程基本語法,希望你能喜歡。2017-11-11mysql中union和union?all的使用及注意事項(xiàng)
這篇文章主要給大家介紹了關(guān)于mysql中union和union?all的使用及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2022-08-08ERROR 2002 (HY000): Can''t connect to local MySQL server thr
mysql 支持 socket 和 TCP/IP 連接。那么 mysql.sock 這個(gè)文件有什么用呢?本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2019-11-11MySQL5.1主從同步出現(xiàn)Relay log read failure錯(cuò)誤解決方法
這篇文章主要介紹了MySQL5.1主從同步出現(xiàn)Relay log read failure錯(cuò)誤解決方法,需要的朋友可以參考下2014-07-07mysql主從同步原理及應(yīng)用場(chǎng)景示例詳解
這篇文章主要為大家介紹了mysql主從同步原理及應(yīng)用場(chǎng)景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問題
本文給大家介紹的是如何解決win平臺(tái)下開發(fā)的項(xiàng)目移植到Linux平臺(tái)后,向MySQL插入數(shù)據(jù)時(shí)中文出現(xiàn)亂碼的問題,非常的簡單實(shí)用,有需要的小伙伴可以參考下2018-04-04