日期:2014-05-19  浏览次数:20412 次

初学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

写了一个简单的例子