sql >> データベース >  >> RDS >> Sqlserver

ストアドプロシージャのパラメータリストで式(関数呼び出しなど)の結果を使用しますか?

    中間変数を使用する必要があります。 SQL Serverは、数年前からTODOリストに含まれていますが、パラメーターリスト自体ではこの種の操作をサポートしていません。 (「アイテムの接続:ストアドプロシージャのパラメータとしてスカラー関数を使用する」を参照)

    EXECの文法

    [ { EXEC | EXECUTE } ]
        { 
          [ @return_status = ]
          { module_name [ ;number ] | @module_name_var } 
            [ [ @parameter = ] { value 
                               | @variable [ OUTPUT ] 
                               | [ DEFAULT ] 
                               }
            ]
          [ ,...n ]
          [ WITH <execute_option> [ ,...n ] ]
        }
    [;]
    

    ドキュメントは現在、valueの許容可能な形式についてそれほど明確ではありません しかし、それはリテラル値や@@などの「単純な」表現にすぎないようです。 プレフィックス付きのシステム関数(@@IDENTITYなど) )。 SCOPE_IDENTITY()などの他のシステム関数 許可されていません(CURRENT_TIMESTAMPなどの括弧を必要としないものでも) 許可されていません。

    したがって、当面は次のような構文を使用する必要があります

    DECLARE @pID INT;
    
    SET @pID = 1;
    
    /*If 2008+ for previous versions this needs to be two separate statements*/
    DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11))
    
    EXEC WriteLog
      'Component',
      'Source',
      @string 
    


    1. PostgreSQLユーザーの作成とデータベースへの追加

    2. 値が存在しない場合にのみ行を返す

    3. Elastisearchからデータを削除する方法

    4. SQL30日より古いすべてのレコードを取得します