更新一次记录必须有不同的值,通过使用 过程返回整数值的过程SQL Server中执行存储过程中更新语句
declare @value int;
exec @value = get_proc param;
update table1 set field1 = @value;
这会为一个记录工作,但我想要的程序,以获得新每个记录的价值
更新一次记录必须有不同的值,通过使用 过程返回整数值的过程SQL Server中执行存储过程中更新语句
declare @value int;
exec @value = get_proc param;
update table1 set field1 = @value;
这会为一个记录工作,但我想要的程序,以获得新每个记录的价值
的如何使用TVF执行此类型的更新只是一个简单的例子:
USE tempdb;
GO
CREATE TABLE dbo.Table1(ID INT, Column1 INT);
INSERT dbo.Table1(ID)
SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3;
GO
CREATE FUNCTION dbo.CalculateNewValue
(@ID INT)
RETURNS TABLE
AS
-- no idea what this logic would be,
-- just showing an example
RETURN(SELECT NewValue = @ID + 1);
GO
SELECT t1.ID, n.NewValue
FROM dbo.Table1 AS t1
CROSS APPLY dbo.CalculateNewValue(t1.ID) AS n;
结果:
ID NewValue
-- --------
1 2
2 3
3 4
现在,使用相同的信息的更新:
UPDATE t1 SET Column1 = n.NewValue
FROM dbo.Table1 AS t1
CROSS APPLY dbo.CalculateNewValue(t1.ID) AS n;
SELECT ID, Column1 FROM dbo.Table1;
结果:
ID Column1
-- -------
1 2
2 3
3 4
这个伟大的东西,你使它几乎像我到现在为止做的 非常感谢你:) – Star 2012-02-23 01:06:22
它真的需要成为一个程序吗?如果你可以实现get_proc函数,那么你可以将它应用到你想要的每条记录上;)
另外,你使用value1的是什么?在你提供的例子中,这不是必需的。
很难说没有更多的信息。存储过程如何确定哪一个值适合每一行?根据存储过程的不同,可能会创建一个表值函数,然后加入。 – 2012-02-23 00:23:22
它通过一些特殊算法的算法返回序列号 当更新每个记录时必须有新的序列号 – Star 2012-02-23 00:26:42
那么如果你可以在表值函数中执行该逻辑,那就是要走的路。 table1中的哪个列决定了@value的值是什么? – 2012-02-23 00:27:49