參見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...