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

首頁 > 數據庫 > MySQL > 正文

mysql心得分享:存儲過程

2024-07-24 12:46:59
字體:
來源:轉載
供稿:網友
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

調用存儲過程

/* 調用存儲過程*/CALL handlerdemo();/* 查看調用存儲過程結果*/SELECT @X,@info;

心得體會:

1、語句結束符

也許mysql是將存儲過程、自定義函數看作一條語句的,因此,存儲過程里多條語句用“;”隔開,為了避免沖突,就要用delimiter 重新定義結束符。

一般可以在存儲過程開始前,定義新的結束符,如

delimiter //

存儲過程書寫完畢以后,再恢復定義:delimiter ;

但也可以在存儲過程開始前,這樣寫 delimiter $$,但存儲過程后不可以再寫別的語句了。如上面的例子

2、變量

mysql的變量,跟SQL SERVER一樣,形如 @X ,但無需聲明,直接使用。

而在存儲過程里面,變量無須用 @,但要聲明。并且聲明要放在存儲過程的頭部(?),如本例,否則報錯。真奇怪啊,一方面,有時候變量無須聲明就可以使用,另一方面,有時候又要限定聲明位置,令人無所適從,似乎隨便了點。

存儲過程內部的變量,作用范圍僅限于存儲過程。但那些帶@的變量,卻仿佛可以跨越會話和連接,看上去是全局變量?如上面的例子。

3、條件和處理

定義條件,是為了給處理調用。如上面的例子:

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中存儲過程、函數的一些問題mysql 查詢數據庫中的存儲過程與函數的語句深入mysql創建自定義函數與存儲過程的詳解mysql 導入導出數據庫以及函數、存儲過程的介紹Mysql存儲過程和函數區別介紹Mysql存儲過程循環內嵌套使用游標示例代碼mysql 存儲過程輸入輸出參數示例Mysql存儲過程中游標的用法實例MySQL存儲過程的異常處理方法MySQL存儲過程中實現執行動態SQL語句的方法MySql存儲過程與函數詳解
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元朗区| 新巴尔虎左旗| 松溪县| 西充县| 独山县| 宜宾县| 天津市| 古田县| 班戈县| 天津市| 武宣县| 甘孜| 教育| 宁城县| 黔西县| 天峨县| 南投县| 汨罗市| 体育| 鄂伦春自治旗| 乌兰察布市| 柳江县| 通化县| 如东县| 江门市| 石棉县| 理塘县| 扶绥县| 徐汇区| 深州市| 唐海县| 鄂温| 独山县| 青岛市| 永城市| 淅川县| 柞水县| 迁西县| 普定县| 桂阳县| 宁明县|