SQL 2005
我有一个名为 tPieceTable 的表,其布局如下:
ID BatchNo PieceNo
-----------------------
1 abc 123
2 xyz 321
在 tPieceTable 中,“ID”是一个 IDENTITY(1,1)。
我还有另一个表格(tLiveTable),它具有以下布局。
ID TimeStamp LocationRef
---------------------------
我要做的是创建一个存储过程,它将 tPieceTable 中的 ID 插入到 tLiveTable 中,其中 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
现在,在插入的同时,我想将新记录的时间戳更新为 GetDate(),对于 LocationRef,我想插入以下查询的输出:
SELECT ID FROM tLocationRefs WHERE Equipment = 'CHARGE_TABLE'
作为参考 tLocationRefs 看起来像这样:
ID Equipment Description
------------------------------
0 CHARGE_TABLE Charger Machine Table
我苦苦挣扎的地方是如何将所有这些结合到一个 INSERT 中。我尝试进行插入,然后进行两次更新,但我无法引用 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”。”
感谢大家的任何帮助。