当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

t sql-t-sql动态游标

admin 121℃
我可以用变量来声明游标吗??

我想创建动态光标,我该怎么做??

致意

我有桌子: 创建表[usersunitask]( [id]uniqueidentifier约束[df_usersunitask_id]default newid()不为空, [useruniid]uniqueidentifier不为空, [taskid]int不为空, [时间]日期时间不为空, [dotask]int不为空, [优先级]int不为空, 约束[pk_usersunitask]主键群集([id]), 约束[fk_usersunitask_usersuni]外键([useruniid]) 引用[usersuni]([id]) 更新时无操作 关于删除级联 ) 在[主要] 转到

你能解释一下你的意思吗?如果要像下面的示例那样在动态上下文中声明光标,则可以:

DECLARE @i int -- variable input
DECLARE @valuableData int

SET @i = 1 -- value for that input, this could be set by a query

DECLARE cursorFoo CURSOR FOR
    SELECT valuableData
    FROM myTable
    WHERE someParameter = @i

OPEN cursorFoo 

WHILE (1=1)
BEGIN
    FETCH NEXT FROM cursorFoo 
         INTO @valuableData

    IF (@@FETCH_STATUS <> 0) BREAK

    SELECT @valuableData -- Do something with your data
END

CLOSE cursorFoo

根据评论中的讨论进行编辑

这里应该有两个独立的程序循环

循环1:

  1. WebService将任务添加到永久 包含优先级信息的表格。

循环2:

  1. 服务器脚本查询永久 最重要任务表
  2. 服务器脚本从 表和进程任务(或手 把这些信息写成剧本 那就行了
  3. 服务器脚本返回到永久 桌子和寻找最重要的 任务

sql是用来存储数据的,而不是循环和处理数据。处理应该使用服务器脚本完成。该脚本应该从数据库中获取数据。当sql同时在同一个临时表中进行写、读和循环时,就开始出现并发问题。您可以在SQL中进行处理,但只应将临时表用于仅与该特定进程相关的数据。

转载请注明:我的代码 » t sql-t-sql动态游标