如何将选定的字段值存储到查询的变量中,并在更新语句中使用它?
这是我的程序:
我正在编写一个执行以下操作的SQL Server 2005 T-SQL存储过程:
- 从发票表中获取发票编号列表并将其存储到Cursor
- 从光标获取发票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类型的局部变量?