これは非常に簡単な解決策ですが、わかりません。助けてください。他のストアドプロシージャからOUTPUT paramを使ってprocを格納したSQLを呼び出す
私は、別のストアドプロシージャからOUTPUTパラメータを持つストアドプロシージャを呼び出す必要があります。私は問題の1つが動的SQLだと思いますが、@SQLWhereがC#コード内で動的に変更されるので、それをどのように書くべきかわかりません。
これは別のPROCから呼び出されprocのです。ここで
ALTER PROCEDURE [dbo].[USP_RetrieveTotalRecord]
@SQLWhere AS NVARCHAR(1000),
@TotalRecordsFound as varchar(16) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL AS NVARCHAR(Max)
SET @SQL='Select @TotalRecordsFound = Count(Table_ID)
From TableName Where ' + @SQLWhere
EXEC(@SQL)
return
END
は、私は別のPROCからそれを呼び出しています方法です。ここで
Declare @TotalRec AS NVARCHAR(16);
Declare @SQLWhere AS NVARCHAR(1000);
SET @SQLWhere='Date Between ''12/13/2016'' AND ''12/14/2016'''
EXECUTE USP_RetrieveTotalRecord @SQLWhere, @TotalRec output;
は私が解決しようとしているエラーです:
Msg 137, Level 15, State 1, Line 30
Must declare the scalar variable "@TotalRecordsFound".
SQLインジェクションの悪夢を無視して、出力をインクルードするように動的クエリをパラメータ化する必要があります。編集:ここの答えは、例です:http://stackoverflow.com/questions/3840730/getting-result-of-dynamic-sql-into-a-variable-for-sql-server – ZLK