初学mssql。一个有关存储过程的问题
怎么把一个存储过程的返回值或者得到的结果赋给一个变量啊?
比如这个存储过程
EXEC [master].[dbo].[xp_readerrorlog] 1, 'c:\2.asa '
我想把这个句子返回的结果赋给一个变量 。 应该怎么写句子呢? 谢谢啦!
------解决方案--------------------EXEC [master].[dbo].[xp_readerrorlog] 1, 'c:\2.asa '
EXEC是执行存储过程,存储过程的名称是xp_readerrorlog,参数是1和 'c:\2.asa '
------------------------------------
假设过程xp_readerrorlog为如下
Create Proc xp_readerrorlog
@No int,
@path varchar(20),
@Name varchar(20) output --带上output表示返回变量参数
As
SET NOCOUNT ON
Select @Name=Name From 表 Where No=@NO And Path=@Path
GO
现在用下列SQL语句调用这个过程
Declare @Name varchar(20)
EXEC [master].[dbo].[xp_readerrorlog] 1, 'c:\2.asa ', @Name output
Select @Name
就可以得到返回值了。
------解决方案--------------------上面的方法用在你的输出参数在存储过程中存在时,如果没有这样改;
Declare @Name varchar(20)
EXEC @Name=[master].[dbo].[xp_readerrorlog] 1, 'c:\2.asa '
Select @Name
------解决方案--------------------楼上两位正解。
------解决方案--------------------if (exists(select * from sysobjects where name = 'pProcName ' and type = 'p '))
drop proc pProcName
create proc pProcName(
@outvarName int out)
as
begin
set @outvarName = 123
end
declare @iOne int
exec pProcName @iOne out
select @iOne as @iOne
写了一个简单的例子