在SQL存储过程中本地存储结果列表

时间:2013-11-29 14:28:47

标签: sql-server variables stored-procedures cursor

在存储过程中,我必须在本地存储表中每个项目的迭代计算结果。 结果应在下一次迭代时使用。 在过程运行结束时,应返回包含item | value字段的表。 我有3个主要要求:

  1. 在程序启动时处理“结晶”数据:用STATIC光标解决
  2. 让不同用户同时调用该过程而不发生冲突:用LOCAL游标解析
  3. 在迭代之间存储本地结果表。
  4. 对于最后一个要求,我希望创建一个随机名称的临时表:

    set @tempTable = 'temp_table'+cast(rand()*1000 as varchar(10))
    

    但是http://www.sommarskog.se/dynamic_sql.html#Dyn_table强烈反对这一点,并且LOCAL STATIC游标不可更新,那么使用什么? 无论在微积分期间可能发生的数据库内容修改,我都必须将初始源数据保持为静态,因此迭代调用相同的过程会很复杂。

1 个答案:

答案 0 :(得分:1)

看看 table variable ,我认为这就是你想要的。它们都在内存中,并在不同的连接之间隔离。