十二 MySQL資料庫 儲存過程詳解

2021-09-23 18:17:18 字數 1270 閱讀 8483

參見mysql資料庫-儲存過程詳解

案例:

drop

procedure

ifexists

`adddep`

;delimiter;;

create

definer

=`root`

@`localhost`

procedure

`adddep`

(in depname varchar(32

),in parentid int

,in enabled boolean

,out result int

,out result2 int

)begin

declare did int

;declare pdeppath varchar(64

);insert

into department set name=depname,parentid=parentid,enabled=enabled;

# 受影響的行數

select row_count(

)into result;

# 剛插入資料的id

select last_insert_id(

)into did;

set result2=did;

select deppath into pdeppath from department where id=parentid;

update department set deppath=concat(pdeppath,

'.',did)

where id=did;

update department set isparent=

true

where id=parentid;

end;

;delimiter

;

關於definer=root@localhost參見 mysql 授權使用者 ; 儲存過程的definer; 命令分隔符delimiter

在寫儲存過程中,可能會涉及到外來鍵約束問題,可以開始關閉外來鍵約束,結束再開啟外來鍵約束,案例:

#禁用外來鍵約束

set foreign_key_checks=0;

。。。。。。。

#啟動外來鍵約束

set foreign_key_checks=

1;

詳情參見mysql啟動和關閉外來鍵約束的方法(foreign_key_checks)

Oracle資料庫(十二) 儲存過程

過程可以通過out或者in out引數返回資料。可以作為乙個單獨的語句執行 procedure shema.name parameter parameter.authid definer current user is declarations begin executable statements...

mysql資料庫 儲存過程

類似於 函式 是一組為了完成特定功能的sql語句集,第一次編譯,以後可以直接呼叫不需要再次編譯。根據定義的不同需要傳入引數 1 增強sql語言的功能和靈活性 儲存過程可以用控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。2 標準元件式程式設計 儲存過程被建立後,可以在程式中被多次呼叫...

八 資料庫mysql儲存過程

8.1什麼是儲存過程 儲存過程 帶有邏輯的sql語句 之前的sql沒有條件判斷,沒有迴圈 儲存過程帶上流程控制語句 if while 8.2儲存過程特點 1 執行效率非常快,儲存過程是在資料庫的伺服器端執行的!2 移植性很差!不同資料庫的儲存過程是不能移植 8.3儲存過程語法 建立儲存過程 deli...