一、儲存過程
儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者
通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。而我們常用的運算元據庫語言sql語句在執行的時
候需要要先編譯,然後執行,所以執行的效率沒有儲存過程高。
儲存過程優點如下:
重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的工作量。提高效能。儲存過程在程式設計客棧建立的時候在進行了編譯,將來使用的時候不再重新翻譯。一般的sql語句每執行一次就需要編譯一次,所以使用儲存過程提高了效率。減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。安全性。引數化的儲存過程可以防止sql注入式攻擊,而且可以將grant、deny以及revoke許可權應用於儲存過程。
儲存過程簡單語法:
create procedure 儲存過程名稱(
輸入輸出型別 變數名稱 型別,
輸入輸出型別 變數名稱 型別
)begin
-- 宣告, 語句要完成的操作,增刪改查。。。
end二、例項
例子中的儲存過程均使用mysql作為例子。
表結構如下:
drop table if exists `person`;
create table `person` (
`id` int(11) not null auto_increment,
`username` varchar(255) default null,
`age` int(11) default null,
`password` varchar(255) default null,
primary key (`id`)
) engine=innodb auto_increment=1cnwlsfjp1 default charset=utf8;
1、只帶in(輸入引數)的儲存過程
表示該引數的值必須在呼叫儲存過程時指定,在儲存過程中修改該引數的值不能被返回,為預設值.
drop procedure if exists proc_person_findbyid;-- 建立儲存過程
create procedure proc_person_findbyid(
in n int
)begin
&n select * from person where id=n;
end-- 定義變數
set @n=2;
-- 呼叫儲存過程
call proc_person_findbyid(@n);
呼叫結果如下:
2、只帶out(輸出引數)的儲存過程
該值可在儲存過程內部被改變,並可返回。
drop procedure if exists proc_person_getcount-- 建立儲存過程
create procedure proc_person_getcount(
out n int(11)
)begin
select count(*) into n from person ;
end-- 呼叫儲存過程
call proc_person_getcount(@n);
select @n as '總數';
呼叫結果如下:
3、帶in(輸入引數)和out(輸出引數)的
呼叫時指程式設計客棧定,並且可被改變和返回
drop procedure if exists proc_person_findinfobyid;-- 建立儲存過程
create procedure proc_person_findinfobyid(
in n int(11),
out pusername varchar(255),
out page int(11)
)begin
select username, age into pusername, page from person where id=n;
end-- 定義變數
set @id=2;
-- 呼叫儲存過程
call proc_person_findinfobyid(@id,@username, @age);
select @username as '使用者名稱', @age '年齡';
呼叫結果如下:
4、帶inout(輸入輸出)引數的儲存過程
-- 輸入輸出drop procedure if exists proc_person_get_age;-- 建立儲存過程create procedure proc_person_get_age( inout n int(11))begin select age into n from person where id=n;endset @id = 1;call proc_person_get_age(@id); select @id; 呼叫結果如下:
5、 關於輸入輸出引數
in為輸入, 定義引數時,可以不加,不加則預設為輸入引數。out為輸出,定義引數時,必須加上。inout為輸入和輸出,必須加上程式設計客棧。表示該引數可以輸入也可在處理後存放結果進行輸出。
本文標題: mysql儲存過程學習筆記--建立簡單的儲存過程
本文位址:
mysql學習筆記 儲存過程
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 proce...
Mysql儲存過程學習筆記
在pl sql中,主要包括declare部分 宣告引數 begin.end部分和例外部分。mysql儲存過程建立的格式 create procedure過程名 過程引數 特性.過程體 選中 函式右鍵 新建建立 完成 輸入函式體 儲存名字 語法 create procedire 儲存過程命名 開始 函...
mysql儲存過程學習筆記
儲存過程理解 1.儲存過程 類似函式或者方法,是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。2.mysql儲存過程的建立 mysql儲存過程建立的格式 create procedure 過程名 過程引數 特...