mysql學習筆記 儲存過程

2021-06-28 13:29:24 字數 1852 閱讀 4497

[sql]view plain

copy

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 

forsqlstate 

'23000'

;  #declare

continue

handler 

forsqlstate 

'23000'

set@x2=1;  

declare

exit handler 

foroh_no 

set@info=

'違反主鍵約束'

;  set

@x=1;  

insert

into

t8 values

(1);  

set@x=2;  

insert

into

t8 values

(1);  

set@x=3;  

end

呼叫儲存過程

[sql]view plain

copy

/* 呼叫儲存過程*/  

call handlerdemo();  

/* 檢視呼叫儲存過程結果*/  

select

@x,@info;  

心得體會:

1、語句結束符

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

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

delimiter //

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

2、變數

mysql的變數,跟sql server一樣,形如 @x ,但無需宣告,直接使用。

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

儲存過程內部的變數,作用範圍僅限於儲存過程。但那些帶@的變數,卻彷彿可以跨越會話和連線,看上去是全域性變數?如上面的例子。

3、條件和處理

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

[sql]view plain

copy

declare

oh_no condition 

forsqlstate 

'23000'

;  #declare

continue

handler 

forsqlstate 

'23000'

set@x2=1;  

declare

exit handler 

foroh_no 

set@info=

'違反主鍵約束'

;  

Mysql儲存過程學習筆記

在pl sql中,主要包括declare部分 宣告引數 begin.end部分和例外部分。mysql儲存過程建立的格式 create procedure過程名 過程引數 特性.過程體 選中 函式右鍵 新建建立 完成 輸入函式體 儲存名字 語法 create procedire 儲存過程命名 開始 函...

mysql儲存過程學習筆記

儲存過程理解 1.儲存過程 類似函式或者方法,是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。2.mysql儲存過程的建立 mysql儲存過程建立的格式 create procedure 過程名 過程引數 特...

mysql儲存過程學習筆記

1.儲存過程簡介 我們常用的運算元據庫語言sql語句在執行的時候需要要先編譯,然後執行,而儲存過程 stored procedure 是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。乙個儲存過程是乙個可程式設...