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”。”
感谢大家的任何帮助。