前提・実現したいこと
SQLSERVERのデータベースの値からデータベース名、フィールド名を抜出をし、
抜出したデータベース名からを参照し、
ストアドから可変的データベースを参照するSQL文(UPDATE文)を実行したい。
発生している問題・エラーメッセージ
Pテーブル
1S LotNo Retrying 2CAAA001 CAAA 3CAAA002 CAAA 4CAAA003 CAAA 5 6Vテーブル 7 S LotNo VResult LatestData 8 CAAA001 CAAA 0 1 9 CAAA001 CAAA 5 0 10 CAAA002 CAAA 0 1 11 CAAA003 CAAA 5 1 12 ↓ 13Pテーブル 14 S LotNo Retrying 15CAAA001 CAAA 16CAAA002 CAAA 17CAAA003 CAAA 7100 18にしたい 19 20文章は実行されるがうまく式が動作しない、
該当のソースコード
SOL server
1 @DB as varchar(50), -- 別テーブル名 2 @DB2 as varchar(50), -- 別テーブル フィールド名1 3 @DB3 as varchar(50), -- 別テーブル フィールド名2 4 @LotNO as varchar(12), -- UPDATE テーブルと別テーブルの共通する値 5 @Retrying as varchar(50), --入れたい情報1 6 @RetryingRegistWorker as nchar(12), --入れたい情報2 7 @RetryingScheduleDay as varchar(50) --入れたい情報3 8 9AS 10DECLARE @Magu AS int 11DECLARE @RCNT AS int 12DECLARE @InnerSQL NVARCHAR(2000) 13 14SET XACT_ABORT ON 15BEGIN TRAN 16 17SET @InnerSQL = 'UPDATE ProductRecord 18 SET ProductRecord.Retrying = ' + @Retrying + 19 ',ProductRecord.RetryingRegistWorker =' + @RetryingRegistWorker + 20 ',ProductRecord.RetryingRegistDay = GETDATE () 21 ,ProductRecord.RetryingScheduleDay =' + @RetryingScheduleDay + 22 ',ProductRecord.RetryingExecutDay = ' + Null + 23 ',ProductRecord.UpdatedDay = GETDATE () 24 WHERE EXISTS 25 (SELECT * 26 FROM '+ @DB + 27 'WHERE ProductRecord.LotNo =' + @LotNO + 28 'AND ProductRecord.LotNo = ' + @DB + '.LotNo)' 29 30EXEC (@InnerSQL) 31 SET @RCNT = @@ROWCOUNT 32 33 COMMIT TRAN 34RETURN @RCNT
試したこと
最初は sp_executesql を使ってやっていたが うまくいかなかったためEXEC単体にシフトチェンジした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー