我可以使用变量来声明游标吗?
我想创建动态游标,我该怎么做?
此致
我有桌子: CREATE TABLE [UsersUniTask]( [id] uniqueidentifier CONSTRAINT [DF_UsersUniTask_id] DEFAULT newid()NOT NULL, [userUniID] uniqueidentifier NOT NULL, [taskID] int NOT NULL, [time] datetime NOT NULL, [doTask] int NOT NULL, [priority] int NOT NULL, CONSTRAINT [PK_UsersUniTask] PRIMARY KEY CLUSTERED([id]), CONSTRAINT [FK_UsersUniTask_UsersUni] FOREIGN KEY([userUniID]) 参考[UsersUni]([id]) 更新没有行动 ON DELETE CASCADE ) ON [主要] GO
答案 0 :(得分:2)
你能解释一下你的意思吗?如果您正在谈论在动态上下文中声明游标,如下例所示,那么您可以:
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:
循环2:
SQL旨在存储数据,而不是循环并处理它。应使用服务器脚本完成处理。该脚本应该从数据库中获取数据。当SQL正在同时写入和读取并循环遍历同一个临时表时,您现在就开始遇到并发问题。您可以在SQL中进行处理,但只应将临时表用于仅与该特定进程相关的数据。