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

同じストア プロシージャで 3 つの更新プログラムを使用していますか?小さなエラー

    ;WITH RatingLines ... で SP を開始します。 最初の UPDATE に接続します ステートメントであり、他のステートメントではありません。このコンストラクトは、それに続く最初のステートメントにのみ表示される CTE を作成します。詳細については、WITH common_table_expression (Transact-SQL)<の TN を参照してください。 /a> .特に、Remarks からの抜粋は次の点を強調しています:

    このテーブルを SP のすべてのステートメントで認識できるようにするには、RatingLines のテーブル変数または一時テーブルを作成します。 代わりは。

    一時テーブルを使用した概要は次のようになります:

    Select   RDA.[CTS]        AS [CTS]
                  ,RDA.[B_KEY]        AS [B_KEY]
                  ,RDA.[H_KEY]        AS [H_KEY]
                  ,RDA.[RT_ID]        AS [RT_ID]
                  ,RDA.[RT_AVGRATING] AS [RT_AVGRATING]
                  ,RDDA.[RTD_COMMENT] AS [RTD_COMMENT]
    INTO #RatingLines -- Create #RatingLines as temporary table
    From  [DynNavHRS].[HRSDB].[HTL_RATING_ALL_DA]        RDA
    Join  [DynNavHRS].[HRSDB].[HTL_RATING_DETAIL_ALL_DA] RDDA
    ON    RDA.RT_ID =RDDA.RT_ID
    AND   RDDA.[RTD_COMMENT] <> ''
    AND   RDA.[B_KEY]='19214642';
    
    -- Throughout the rest of the SP, use #RatingLines as your ratings table; eg:
    ...
    INNER JOIN #RatingLines   RL1
    ...
    
    -- At the end of the SP, drop the temporary table
    DROP TABLE #RatingLines;
    



    1. #1146-テーブルXXXXが存在しません

    2. データベースを Windows 認証から保護する方法

    3. FieldShieldでの静的および動的データマスキング

    4. MySQLでテーブルを表示する