0

テーブル変数を使用してストアドプロシージャを書き直しています。基本的に、DataTableに渡してから、データテーブルをテーブル変数としてストアドプロシージャに渡すリストがあります。ストアドプロシージャは正しくコンパイルされますが、SSMSまたは.Netで実行すると、無効なオブジェクト名'@TableVar'が取得されます。これは初めてですので、よろしくお願いします。

 Alter PROCEDURE [dbo].[proc]
    (
        @TableVar [dbo].[TableVar] READONLY
    )
    AS
BEGIN
Set nocount on
Declare @MYID INT
Declare @SOMEDate DateTime
Declare @NEWDate Date


select @MYID = some_id,
@SOMEDate = convert(date, db_some_date) from tbl_some
where someval = (select tb.val1 from [@TableVar] as tb);


Merge OneTabl as target
  using (Select x.val1, x.val2, x.val3,x.val4,
                        x.val5,x.val6, x.val7 from [@TableVar] as x)
  as Source

  on val_id = @MYID
  when matched and  @MYID !=NULL then

 update set MDN= Source.[MDN],
                  val1= Source.[val1],
                  val2=Source.[val2],
                  val3=Source.[val3],
                  val4=Source.[val4],
                  val5=Source.[val5],
                  val6=Source.[val6]

  when not matched and @MYID !=NULL then  
   insert  
   values (Source.[val1],
           Source.[val2],
           Source.[val3],
               Source.[val4],
               Source.[val5],
               Source.[val6],
               Source.[val7],
               [@MYID]
      )      ;
end 
4

1 に答える 1

1

提案されたように tablevar ref から [] ブラケットを削除しました。ありがとうございます。ありがとう@Habo

于 2012-09-10T17:31:28.143 に答える