ホームページ > データベース > mysql チュートリアル > 式の結果をパラメータとして SQL Server ストアド プロシージャに渡すにはどうすればよいですか?

式の結果をパラメータとして SQL Server ストアド プロシージャに渡すにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-11 17:22:45
オリジナル
888 人が閲覧しました

How Can I Pass Expression Results as Parameters to SQL Server Stored Procedures?

式入力をストアド プロシージャ パラメーターとして使用する

ストアド プロシージャを作成する場合、式の結果をパラメータとして使用するときに問題が発生する場合があります。以下に例を示します:

<code class="language-sql">DECLARE @pID int;
SET @pID = 1;
EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);</code>
ログイン後にコピー

ただし、このコードはエラーをスローします (SQL Server 2005):

<code>Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '+'.</code>
ログイン後にコピー

文法エラーの説明

SQL Server では、パラメーター リストでのこのような操作は許可されていません。引数はリテラル値、宣言された変数、または演算子のない式であることが期待されます。

解決策: 中間変数を使用します

この問題を解決するには、中間変数を使用する必要があります。以下の修正されたコードは、このアプローチを示しています:

<code class="language-sql">DECLARE @pID INT;
SET @pID = 1;
DECLARE @logMessage VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11));
EXEC WriteLog 'Component', 'Source', @logMessage;</code>
ログイン後にコピー

実行ステートメントの構文

参考までに、EXEC ステートメントの構文は次のとおりです。

<code class="language-sql">[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }
        ]
      [ ,...n ]
      [ WITH <execute_option> [ ,...n ] ]
    }
[;]</execute_option></code>
ログイン後にコピー

現在の制限

SQL Server では、パラメータ リスト内のパラメータに許容される値は、リテラル値と @@ の接頭辞が付いたシステム関数に制限されます。 SCOPE_IDENTITY() などの関数はサポートされていません。

以上が式の結果をパラメータとして SQL Server ストアド プロシージャに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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