1. 程式人生 > >mysql數據庫之存儲過程

mysql數據庫之存儲過程

mysql te pro 調用 item mys 需要 數據庫 tar bsp

存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,存儲在數據庫中,經過第一次編譯後調用不需要再次編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。

存儲過程大體語法結構:

delimiter //

create procedure procedurename(in myname varchar(20),out myid int,inout sex char)

begin

declare i.....

set 賦值語句.....

sql語句......

if ...

while do...

loop....

end

//

整個存儲過程大體結構如上

調用存儲過程:

set @myname=‘jason‘;

set @myid=1;

set @sex=‘男‘;

call procedurename(@myname,@myid,@sex);

刪除存儲過程:

drop procedure procedurename;

整個存儲過程從創建到刪除,大體流程就是這樣的

下面詳細解釋:

delimiter//
create procedure pname(in,inout,out)
begin
end
//
刪除存儲過程f:drop procedure pname;


delimiter//

create PROCEDURE selc(in myid INT,IN myname varCHAR(20))
BEGIN
SELECT * FROM proc WHERE id=myid AND username=myname;
INSERT INTO proc (username,id)VALUES(‘chen‘,3);
END
//
DROP PROCEDURE selc;
set @myid=1;
set @myname=‘zhang‘;
call selc(@myid,@myname);
SELECT * FROM proc;

delimiter//
create PROCEDURE outselec(out myname varchar(20),in myid int)

BEGIN
SELECT username INTO myname FROM proc where id=myid;#username into myname是將查詢出來的username值賦值給myname參數
end
//
DROP PROCEDURE outselec;
set @myname=‘‘;
set @myid=1;
call outselec(@myname,@myid);
SELECT @myname username;


輸入輸出參數的測試
delimiter //
create procedure p_inout ( INOUT num int )
begin
select num;
set num=100;
select num;
end;
//
delimiter ;

set @num=200;
call p_inout(@num)

mysql數據庫之存儲過程