如何将一个执行结果分配给一个SQLvariables?

如何将SQL调用的结果分配给SQL中的variables? 我有一个名为up_GetBusinessDay的存储up_GetBusinessDay ,它返回一个date。

你可以做这样的事情:

 exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1 

我总是使用返回值来传回错误状态。 如果你需要传回一个值,我会使用一个输出参数。

示例存储过程,带有一个OUTPUT参数:

 CREATE PROCEDURE YourStoredProcedure ( @Param1 int ,@Param2 varchar(5) ,@Param3 datetime OUTPUT ) AS IF ISNULL(@Param1,0)>5 BEGIN SET @Param3=GETDATE() END ELSE BEGIN SET @Param3='1/1/2010' END RETURN 0 GO 

使用OUTPUT参数调用存储过程:

 DECLARE @OutputParameter datetime ,@ReturnValue int EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT PRINT @ReturnValue PRINT CONVERT(char(23),@OutputParameter ,121) 

OUTPUT:

 0 2010-01-01 00:00:00.000 

这将工作,如果你只想返回一个整数:

 DECLARE @ResultForPos INT EXEC @ResultForPos = storedprocedureName 'InputParameter' SELECT @ResultForPos 
 declare @EventId int CREATE TABLE #EventId (EventId int) insert into #EventId exec rptInputEventId set @EventId = (select * from #EventId) drop table #EventId 

从文档 (假设您使用SQL-Server):

 USE AdventureWorks; GO DECLARE @returnstatus nvarchar(15); SET @returnstatus = NULL; EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2; PRINT @returnstatus; GO 

所以是的,它应该这样工作。