国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql心得分享:存儲(chǔ)過程

2020-01-18 23:11:42
字體:
供稿:網(wǎng)友
use test;drop table if exists t8;CREATE TABLE t8(s1 INT,PRIMARY KEY(s1));drop procedure if exists handlerdemo;DELIMITER $$CREATE PROCEDURE handlerdemo()BEGINdeclare 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='違反主鍵約束';

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 滁州市| 吐鲁番市| 鹤峰县| 南陵县| 潮州市| 武鸣县| 攀枝花市| 从化市| 闻喜县| 和静县| 图们市| 辉县市| 万盛区| 宁化县| 兰西县| 林西县| 云浮市| 尉氏县| 汶川县| 土默特右旗| 潮安县| 岑溪市| 高阳县| 南陵县| 顺昌县| 河南省| 通许县| 平阴县| 许昌县| 海宁市| 左云县| 乌恰县| 日土县| 延津县| 衡水市| 婺源县| 江口县| 吴堡县| 同德县| 健康| 沁阳市|