update @RTable set id2=emp.id from emp where emp.id2=RTable.id2
这是出自我写的sqlserver2005表值函数中的一行,其中@RTable声明了,程序前部也用了它没毛病。可是为什么上行update不行?
出错信息我没记,我想一定是很菜的初级问题!用不着记。
这是出自我写的sqlserver2005表值函数中的一行,其中@RTable声明了,程序前部也用了它没毛病。可是为什么上行update不行?
出错信息我没记,我想一定是很菜的初级问题!用不着记。
update @RTable set id2=emp.id from emp where emp.id2=RTable.id2
另说明,在注释掉红色的两行后,一切正常!
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER FUNCTION [dbo].[subb] ( )
RETURNS @RTable TABLE
(
id1 int,
id2 int
)
AS
BEGIN
declare @i int,@j int,@x int,@b int,@e int
set @e=(select max(id2) from emp)
set @b=1
while (@b<=@e)
begin
set @i=0
WHILE (@b*power(2,@i)<=@e)
BEGIN
set @x=@b*power(2,@i)
set @j=1
while @j<=power(2,@i)
begin
if @x<>@b INSERT @RTable (id1,id2) values (@b,@x)
set @x=@x+1
IF @x>@e break
set @j=@j+1
end
set @i=@i+1
END
set @b=@b+1
end
update @RTable set id1=emp.id from emp where emp.id2=RTable.id1
update @RTable set id2=emp.id from emp where emp.id2=RTable.id2
RETURN
END
from @RTable a inner join emp
where emp.id2=a.id2
用表变量更新时,须要别名,不能直接引用RTable.id1
update @RTable set id2=b.id from @RTable a join emp b on b.id2=a.id2