SQL 2005
次のようなレイアウトのtPieceTableというテーブルがあります。
ID BatchNo PieceNo
-----------------------
1 abc 123
2 xyz 321
tPieceTableでは、「ID」はIDENTITY(1,1)です。
次のレイアウトの別のテーブル(tLiveTable)もあります。
ID TimeStamp LocationRef
---------------------------
私がやろうとしているのは、tPieceTableからtLiveTableにIDを挿入するストアドプロシージャを作成することです。ここで、BatchNoは@BatchNoに等しく、PieceNoは@PieceNoに等しくなります(これらはストアドプロシージャのパラメーターです)。
動作しているように見える次のものがあります。
CREATE PROCEDURE spSetLocationChargeTable
@BatchNo nvarchar(50),
@PieceNo nvarchar(50)
AS
INSERT INTO tLiveTable(PieceID)
SELECT ID FROM tPieceTable
WHERE tPieceTable.BatchNo = @BatchNo AND tPieceTable.PieceNo = @PieceNo
GO
ここで、INSERTと同時に、新しいレコードのTimeStampをGetDate()として更新し、LocationRefの場合は次のクエリの出力を挿入します。
SELECT ID FROM tLocationRefs WHERE Equipment = 'CHARGE_TABLE'
参考までに、tLocationRefsは次のようになります。
ID Equipment Description
------------------------------
0 CHARGE_TABLE Charger Machine Table
私が苦労しているのは、これらすべてを1つのINSERTに組み合わせる方法です。挿入に続いて2つのUPDATEを実行しようとしましたが、次のようにtPieceTableを参照できません。
CREATE PROCEDURE spSetLocationChargeTable
@BatchNo nvarchar(50),
@PieceNo nvarchar(50)
AS
INSERT INTO tLiveTable(PieceID)
SELECT ID FROM tPieceTable
WHERE tPieceTable.BatchNo = @BatchNo AND tPieceTable.PieceNo = @PieceNo
UPDATE tLiveTable
SET TimeStamp = GetDate()
WHERE tPieceTable.BatchNo = @BatchNo AND tPieceTable.PieceNo = @PieceNo
UPDATE tLiveTable
SET LocationRef = (SELECT ID FROM tLocationRefs WHERE Equipment = 'CHARGE_TABLE')
WHERE BatchNo = @BatchNo AND PieceNo = @PieceNo
GO
私は得る:-
マルチパート識別子「tPieceTable.BatchNo」が見つかりませんでした。」マルチパート識別子「tPieceTable.PieceNo」が見つかりませんでした。」
助けてくれてありがとう。