0
私はこれで困っています。私は次のコードを更新ステートメントの最後の@POC_XLATEの時点までうまく動作させてから、エラーを取得しなければなりません。これはSCALAR VARIABLEを宣言しなければなりません。 テーブルを一時テーブルに変更すると、コードは正常に動作します。私はselect文をコードの最後に移動しようとしましたが、それはうまくいきませんでした。誰かがなぜこれをやっているのかについていくつかの提案があることを願っています。前もって感謝します。スカラー変数のエラーはvarテーブルを使用していますが、温度テーブルはありません
declare @POC_XLATE as TABLE(
POC_XLATE_ID int NULL,
TAR_ID int NULL,
POC_USERID varchar(50) NULL,
ACTION_DATE datetime NULL
)
insert into @POC_XLATE(POC_XLATE_ID, TAR_ID, POC_USERID, ACTION_DATE)
select * from POC_XLATE
where POC_XLATE.ACTION_DATE is null
select * from @POC_XLATE
update @POC_XLATE
set ACTION_DATE = TAR_DATA.OPEN_DATE
from TAR_DATA
where @POC_XLATE.TAR_ID = TAR_DATA.TAR_ID
実際のテーブルを更新する前に正しいデータが転送されているかどうかをチェックするこの方法。更新ステートメントの@POC_XLATEは、テーブルのスカラー変数を宣言する必要があると伝えています。すでに宣言されています。だからなぜ表を再宣言しなければならないのですか? @ tcmauldin。 – tcmauldin
。 。 SQL Serverが '@'で始まる変数を渡すと、ほとんどの状況では変数が*スカラー変数であるとみなされます。 *スカラー変数が存在しない場合、実行は失敗します。例外は、テーブル変数が許される 'FROM'節にあります。 –