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