如何在函数中 UPDATE/SET
How to UPDATE/SET inside a function
这是 table 值函数中我的代码的一部分:
DECLARE @Temp1 table (tempid int not null, tasknr varchar(50) null, devcat varchar(50) null, taskop datetime null, taskcl datetime null)
(...)
DECLARE @Temp1a table (tempid int, tasknr nvarchar(50), cat nvarchar (50), taskop datetime, taskcl datetime)
(...)
UPDATE
@Temp1
SET
@Temp1.tasknr = @Temp1a.tasknr,
@Temp1.devcat = @Temp1a.devcat,
@Temp1.taskop = @Temp1a.taskop,
@Temp1.taskcl = @Temp1a.taskcl
FROM
@Temp1a
INNER JOIN
@Temp1
ON
@Temp1.tempid = @Temp1a.tempid
我需要的是能够使用另一个 table 的值更新一个 table 的值。
但是我遇到了一个错误
Must declare a scalar variable "@Temp1a".
和
Incorrect syntax near '.'.
我怎样才能使这个工作?
UPDATE
t
SET
tasknr = a.tasknr,
devcat = a.devcat,
taskop = a.taskop,
taskcl = a.taskcl
FROM
@Temp1a a
INNER JOIN
@Temp1 t
ON
t.tempid = a.tempid
问题是您需要别名。 @
对 table 参考无效:
UPDATE t1
SET
tasknr = t1a.tasknr,
devcat = t1a.devcat,
taskop = t1a.taskop,
taskcl = t1a.taskcl
FROM @Temp1a t1a INNER JOIN
@Temp1 t1
ON t1.tempid = t1a.tempid;
此外,SQL 服务器不允许在 set
.
中为变量使用 table 名称
这是 table 值函数中我的代码的一部分:
DECLARE @Temp1 table (tempid int not null, tasknr varchar(50) null, devcat varchar(50) null, taskop datetime null, taskcl datetime null)
(...)
DECLARE @Temp1a table (tempid int, tasknr nvarchar(50), cat nvarchar (50), taskop datetime, taskcl datetime)
(...)
UPDATE
@Temp1
SET
@Temp1.tasknr = @Temp1a.tasknr,
@Temp1.devcat = @Temp1a.devcat,
@Temp1.taskop = @Temp1a.taskop,
@Temp1.taskcl = @Temp1a.taskcl
FROM
@Temp1a
INNER JOIN
@Temp1
ON
@Temp1.tempid = @Temp1a.tempid
我需要的是能够使用另一个 table 的值更新一个 table 的值。
但是我遇到了一个错误
Must declare a scalar variable "@Temp1a".
和
Incorrect syntax near '.'.
我怎样才能使这个工作?
UPDATE
t
SET
tasknr = a.tasknr,
devcat = a.devcat,
taskop = a.taskop,
taskcl = a.taskcl
FROM
@Temp1a a
INNER JOIN
@Temp1 t
ON
t.tempid = a.tempid
问题是您需要别名。 @
对 table 参考无效:
UPDATE t1
SET
tasknr = t1a.tasknr,
devcat = t1a.devcat,
taskop = t1a.taskop,
taskcl = t1a.taskcl
FROM @Temp1a t1a INNER JOIN
@Temp1 t1
ON t1.tempid = t1a.tempid;
此外,SQL 服务器不允许在 set
.