SQLserver-调用带输入参数、输出参数的存储过程
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,