程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql心得分享:存儲進程

mysql心得分享:存儲進程

編輯: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

挪用存儲進程

/* 挪用存儲進程*/
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='違背主鍵束縛';

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved