Tsql t-sql动态游标

Tsql t-sql动态游标,tsql,cursor,Tsql,Cursor,我可以使用变量来声明游标吗 我想创建动态光标,我该怎么做 问候 我有一张桌子: 创建表[UsersUniTask] [id]uniqueidentifier约束[DF_UsersUniTask_id]默认newid不为空, [userUniID]唯一标识符不为空, [taskID]int不为空, [时间]日期时间不为空, [doTask]int不为NULL, [优先级]int不为空, 约束[PK_UsersUniTask]主键群集[id], 约束[FK_UsersUniTask_UsersUni

我可以使用变量来声明游标吗

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

问候

我有一张桌子: 创建表[UsersUniTask] [id]uniqueidentifier约束[DF_UsersUniTask_id]默认newid不为空, [userUniID]唯一标识符不为空, [taskID]int不为空, [时间]日期时间不为空, [doTask]int不为NULL, [优先级]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:

Webservice将任务添加到永久 带有优先级信息的表。 循环2:

服务器脚本查询永久 最重要任务表 服务器脚本从中删除任务 表和流程任务或手 将这些信息转换成脚本 那就行了 服务器脚本返回到永久 表并查找最重要的 任务
SQL旨在存储数据,而不是循环和处理数据。处理应使用服务器脚本完成。该脚本应该从数据库中获取数据。当SQL同时在同一个临时表中写入、读取和循环时,就会出现并发问题。您可以在SQL中进行处理,但您应该只对仅与该特定进程相关的数据使用临时表。

我有一个带有游标的重现过程,我发现一个错误,游标存在,我想创建动态游标。我必须创建游标的动态名称,它是唯一的。我想这样做:声明@CursorName nvarchar500 set@CursorName='AddTaskCursor';声明@CursorName CURSOR FAST\u FORWARD READ\u仅用于。。。但我不能这样做:不,不能动态声明游标名称。只能动态定义光标的参数。如果在脚本运行后光标未关闭时出现问题,请在CLOSE语句后添加DEALLOCATE cursor NAME。我的光标如下所示:声明AddTaskCursor cursor FAST\u FORWARD READ\u仅用于SELECT id、userUniID、taskID、doTask、,@Tasks Open AddTaskCursor-TODO ZROBIĆWYWOŁANIE PROCEDURY的优先级-在这个地方,我用这个游标执行的过程是-并且这个过程不能用CLOSE AddTaskCursor使用的名称声明游标;取消分配AddTaskCursor;正如您所看到的,对于我的问题,可能还有其他解决方案:我想对临时表中的所有记录执行过程。您可以发布代码吗?我对它的样子感到很困惑。如果您试图递归地调用存储过程,这是一个坏主意。在游标内部调用游标也是一个坏主意。