存儲過程

定義:

一組爲了完成特色定功能的SQL語句集合,編譯後存儲在數據庫中,能夠經過指定存儲過程造成並給出參數執行。數據庫

語法

create proc | procedure pro_name
[{@參數數據類型} [=默認值] [output],
{@參數數據類型} [=默認值] [output],
....
]
as
SQL_statements

 

修改

alter proc proc_get_student
as
select * from student;

 

不帶參數存儲過程

建立:create proc proc_get_student
as
select * from student;
調用:exec proc_get_student;

 

帶參數存儲過程

建立:create proc proc_find_stu(@startId int = 1, @endId int = 2)
as
select * from student where id between @startId and @endId
默認參數根據須要設置

調用(默認參數):exec proc_find_stu;

調用(自定義參數):exec proc_find_stu 2, 4;
 
  
 

 

帶輸出參數存儲過程

建立:create proc proc_getStudentRecord(
 @id int, --默認輸入參數
@name varchar(20) out, --輸出參數
@age varchar(20) output--輸入輸出參數
)
as
select @name = name, @age = age from student where id = @id and age = @age;
調用:
declare @id int,
@name varchar(20),
@temp varchar(20);
set @id = 7;
set @temp = 1;
exec proc_getStudentRecord @id, @name out, @temp output;
select @name, @temp;
print @name + '#' + @temp;
 
  
 

 

存儲過程優缺點

優勢:緩存

    • 減小網絡數據量,下降網絡開銷
    • 執行速度快,建立時編譯一次,之後不須要從新編譯。通常SQL每次執行都須要編譯(不命中緩存時)
    • 多條語句批處理,減小數據庫鏈接次數
    • 參數化,防止SQL注入
    • 可控制存儲過程使用權限
    • 有些時候修改只須要修改存儲過程,不須要修改程序代碼

缺點:網絡

    • 使用複雜的存儲過程,可是數據庫不擅長處理邏輯
    • 維護問題,不易調試,發現問題。表結構發生改變,涉及的存儲過程修改問題。多副本部署問題。
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息