多个存储过程输出

时间:2015-11-28 19:15:51

标签: sql sql-server tsql stored-procedures

无法使此存储过程正常工作。该过程接受表名和其他符号输入并发送多个输出。不知道我错过了什么,但动态查询不起作用。帮助

ALTER PROCEDURE [dbo].[usrSetSymbolMetrics]
    -- Add the parameters for the stored procedure here
    @TableName SYSNAME,
    @Symbol NVARCHAR(50),
    @LTDMean float output,
    @LTDStdev float output,
    @PYTDMean float output,
    @PYTDStdev float output,
    @YTDMean float output,
    @YTDStdev float output

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    --Print @Symbol;
   DECLARE @SQLCommand NVARCHAR(MAX) = 
        N'SELECT @LTDMean=[LTD_MEAN], @LTDStdev=[LTD_STDEV], @PYTDMean=[PYTD_MEAN], @PYTDStdev=[PYTD_STDEV], @YTDMean=[YTD_MEAN], @YTDStdev=[YTD_STDEV] FROM ' + QUOTENAME(@TableName) + ' WHERE SYMBOL=@Symbol';

Print @SQLCommand;
    EXECUTE dbo.sp_executesql @sqlCommand
      , N'@Symbol NVARCHAR(50), @LTDMean FLOAT, @LTDStdev FLOAT, @PYTDMean FLOAT, @PYTDStdev FLOAT, @YTDMean FLOAT, @YTDStdev FLOAT'
      , @Symbol = @Symbol
      , @LTDMean = @LTDMean
      , @LTDStdev = @LTDStdev
      , @PYTDMean  = @PYTDMean
      , @PYTDStdev = @PYTDStdev
      , @YTDMean = @YTDMean
      , @YTDStdev = @YTDStdev;
END

1 个答案:

答案 0 :(得分:1)

您需要使用OUTPUT关键字:

EXECUTE dbo.sp_executesql @sqlCommand
  , N'@Symbol NVARCHAR(50), @LTDMean FLOAT OUTPUT, @LTDStdev FLOAT OUTPUT, @PYTDMean FLOAT OUTPUT, @PYTDStdev FLOAT OUTPUT, @YTDMean FLOAT OUTPUT, @YTDStdev FLOAT OUTPUT'
  , @Symbol = @Symbol
  , @LTDMean = @LTDMean OUTPUT 
  , @LTDStdev = @LTDStdev OUTPUT 
  , @PYTDMean  = @PYTDMean OUTPUT 
  , @PYTDStdev = @PYTDStdev OUTPUT 
  , @YTDMean = @YTDMean OUTPUT 
  , @YTDStdev = @YTDStdev OUTPUT ;