mysql數據庫之存儲過程
存儲過程(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//
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)
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數據庫之存儲過程