ホームページ > データベース > mysql チュートリアル > ストアド プロシージャでグローバル入力パラメータを使用するときに発生する「スカラー変数 '@RowFrom' を宣言する必要があります」エラーを修正する方法

ストアド プロシージャでグローバル入力パラメータを使用するときに発生する「スカラー変数 '@RowFrom' を宣言する必要があります」エラーを修正する方法

Mary-Kate Olsen
リリース: 2024-12-17 00:24:25
オリジナル
903 人が閲覧しました

How to Fix

「@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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート