「@RowFrom」および「@RowTo」グローバル入力パラメーターによるコンパイル エラーへの対処
ストアド プロシージャでのグローバル入力パラメーターの宣言は次のとおりです。手順内で使用するために必要です。ただし、「Exec(@sqlstatement)」を使用してストアド プロシージャ内でコンパイルされた SQL クエリを実行する場合、「@RowFrom」または「@RowTo」入力パラメータが正しく宣言または使用されていません。
表示されたエラー メッセージは、「@RowFrom」変数が宣言されていないことを示しています。これを解決するには、SQL クエリで参照する前に、ストアド プロシージャ内で "@RowFrom" と "@RowTo" をスカラー変数として明示的に宣言します。
さらに、"@RowTo" の値を連結を使用して新しい変数を作成する場合は、変数の型が適切に変換されていることを確認してください。間違った構文
SET @Rt = ' + @RowTo
の代わりに、正しい構文を使用して "@RowTo" を文字列にキャストします。
SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo)
SQL Server の最新バージョンでは、CONCAT() 関数がサポートされています。これらの操作を簡素化します:
SET @sql = N'SELECT ' + CONVERT(varchar(12), @RowTo) + ' * 5';
ただし、SQL インジェクションに対するセキュリティを強化するために、これをお勧めします。連結の代わりにパラメータ化された SQL ステートメントを使用します。これには、次の例のように、入力パラメータを SQL クエリに明示的に渡すことが含まれます:
SET @sql = @sql + ' WHERE RowNum BETWEEN @RowFrom AND @RowTo;'; EXEC sys.sp_executesql @sql, N'@RowFrom int, @RowTo int', @RowFrom, @RowTo;
以上がストアド プロシージャでグローバル入力パラメータを使用するときに発生する「スカラー変数 '@RowFrom' を宣言する必要があります」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。