SQL Server存儲過程在我們sql語句中經常使用,因為作為一個菜鳥,發現寫出來存儲過程之后,竟然不知道怎么調用,按照自己猜測調用方式都是報錯。所以通過查找資料,查到了sqlserver 的老巢,慢慢和大家一起學習進步。今天先和小編看看怎么調用有參數的存儲過程
1、創建一個表,作為基礎數據,如下所示
create table test (id int,name varchar(20));
--創建一個不帶任何參數的存儲過程
create procedure insertTest
as
declare @i1 int--定義插入表test數據條數
set @i1=0--賦初值
while @i1<10
begin
insert into test values (@i1,'name'+convert(varchar(20),@i1));
set @i1=@i1+1
end
--調用存儲過程
exec insertTest
--查詢是否已經將數據成功插入到表test中
select * from test;
2、根據存儲過程的入參id條件,輸出name
--創建一個帶入參和出參的存儲過程
create procedure pro2
@id1 int,--不寫參數的類型,默認輸入參數
@name1 varchar(20) output--輸出型參數
as
begin
select @name1=name from test where id=@id1
end
--調用並查看存儲過程返回的數據
declare @name2 varchar(20);
exec pro2 @name1=@name2 output,@id1=1
select @name2
--其它調用方式
--exec pro2 1,@name2 output
--exec pro2 @name2 output,1
使用上訴調用方式其報錯為
/*
注意這里因為省略的參數名字所以必須要和存儲過程定義時的參數個數和數據類型保持一致,
舉一反三就是像我們在調用一個函數時,也要遵守該函數的形參格式是一個道理
*/
/*
這里有顯式的參數名字,你就可以不顧順序,只要把所有的參數給賦值就好了
*/
--exec pro2 @name1=@name2 output,@id1=1
--exec pro2 @id1=1,@name1=@name2 output--如果是output型參數也需要在調用時聲明其為output,