如何将选定的字段值存储到查询中的变量中并在更新语句中使用它?
这是我的程序:
我正在编写一个 SQL Server 2005 T-SQL 存储过程,它执行以下操作:
- 从发票表中获取发票 ID 列表并将其存储到光标
- 从光标获取发票 ID -> tmp_key 变量
- foreach tmp_key 从客户表中查找发票客户主要联系人 ID
- 使用主要联系人 ID 更新客户端联系人密钥
- 关闭光标
这是我的代码:
DECLARE @tmp_key int
DECLARE @get_invckey cursor
set @get_invckey = CURSOR FOR
select invckey from tarinvoice where confirmtocntctkey is null and tranno like '%115876'
OPEN @get_invckey
FETCH NEXT FROM @get_invckey into @tmp_key
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT c.PrimaryCntctKey as PrimaryContactKey
from tarcustomer c, tarinvoice i
where i.custkey = c.custkey and i.invckey = @tmp_key
UPDATE tarinvoice set confirmtocntctkey = PrimaryContactKey where invckey = @tmp_key
FETCH NEXT FROM @get_invckey INTO @tmp_key
END
CLOSE @get_invckey
DEALLOCATE @get_invckey
如何存储 PrimaryContactKey 并在以下更新语句的 set 子句中再次使用它?我是创建一个游标变量还是创建另一个 int 类型的局部变量?