一:沒有參數的存儲過程
CREATE PROCEDURE select_all AS BEGIN SELECT * from T_login1 END GO
二:帶參數的存儲過程
CREATE PROCEDURE select_name @id uniqueidentifier AS BEGIN SELECT * from T_login1 where PSN0001A=@id END GO
三:帶通配符參數存儲過程
alter proc proc_findStudentByName @name nvarchar(10)='F%' as select * from T_login1 where PSN0001A like @name go exec proc_findStudentByName 'F%'
四:帶默認值的參數的存儲過程
create proc sele_name @name nvarchar(10)='hong3' as select * from T_login1 where PSN0002A=@name exec sele_name 'lk' exec sele_name
五:帶輸出參數的存儲過程
create proc [dbo].[p_selectName] @name nvarchar(10), @num int output as select @num=COUNT(PSN0001A) from T_login1 where PSN0002A=@name declare @num int exec p_selectName 'lk',@num output print @num declare @num1 int exec p_selectName @name='lk',@num=@num1 output print @num1
六:臨時存儲過程
create proc #p_selectName2 as select COUNT(PSN0001A) from T_login1 where PSN0002A='lk' exec #p_selectName2
七:存儲過程的嵌套
alter proc #p_selectName2 as select COUNT(PSN0001A) from T_login1 where PSN0002A='lk' exec sele_name exec #p_selectName2
八:不緩存的存儲過程
if (object_id('proc_temp', 'P') is not null) drop proc proc_temp1--如果存在不為空,釋放掉 go create proc proc_temp1 with recompile as select * from T_login1 go exec proc_temp1;
九:加密存儲過程(無法查看存儲過程的代碼)
if (object_id('proc_temp_encryption', 'P') is not null) drop proc proc_temp_encryption go create proc proc_temp_encryption with encryption as select * from T_login1; go exec proc_temp_encryption; exec sp_helptext 'proc_temp1'; exec sp_helptext 'proc_temp_encryption';
十:存儲過程中使用if......else
CREATE PROCEDURE pro_numToName @num int , @str nvarchar(5) output AS if @num=11 begin set @str='wang' end else begin set @str='qita' end
