游标内的游标?
cursor within a cursor?
是否可以在游标内定义游标?
我有两个带列的游标,然后我通过减号语句将它们相互减去。
但是,我还需要在 minus 语句之后有一个游标,因为我需要迭代列。应将每一列添加到创建视图脚本,以便它创建所有列。
我需要变量“all”的光标。有人有想法吗?它不适用于此代码..
请不要看“xy”之类的内容。这些值尚未调整。这只是一个测试脚本。
这是我的脚本:
DECLARE CURSOR itemsone
FOR
SELECT table_name, column_name
FROM table1
WHERE table_name LIKE 'xy';
DECLARE CURSOR itemstwo
FOR
SELECT table_name, column_name
FROM table2
WHERE table_name LIKE 'xy';
DECLARE test_sql VARCHAR(500);
---
FOR item AS itemone DO
all = SELECT column_name FROM table1 WHERE table_name = 'xy' AND column_name like 'z'
MINUS
SELECT column_name FROM table2 WHERE table_name = 'xy';
test_sql= CONCAT(CONCAT('CREATE OR REPLACE VIEW V_', 'TEST'), 'AS ( SELECT');
FOR a AS all DO
test_sql = test_sql + CONCAT(a,', ');
END FOR;
-- MORE TO FOLLOW
是的,可以根据需要多次嵌套游标。
下面是我嵌套 3 个游标的示例:
Declare Cursor_1 CURSOR FOR Select (...)
Open Cursor_1
Fetch Next From Cursor_1 Into (...)
While(@@FETCH_STATUS = 0)
Begin
Declare Cursor_2 CURSOR FOR Select (...)
Open Cursor_2
Fetch Next From Cursor_2 Into (...)
While(@@FETCH_STATUS = 0)
Begin
Declare Cursor_3 CURSOR FOR Select (...)
Open Cursor_3
Fetch Next From Cursor_3 (...)
While(@@FETCH_STATUS = 0)
Begin
(...)
Fetch Next From Cursor_3 Into (...)
End
Close Cursor_3
Deallocate Cursor_3
Fetch Next From Cursor_2 Into (...)
End
Close Cursor_2
Deallocate Cursor_2
Fetch Next From Cursor_1 Into (...)
End
CLOSE Cursor_1
DEALLOCATE Cursor_1
是否可以在游标内定义游标?
我有两个带列的游标,然后我通过减号语句将它们相互减去。 但是,我还需要在 minus 语句之后有一个游标,因为我需要迭代列。应将每一列添加到创建视图脚本,以便它创建所有列。
我需要变量“all”的光标。有人有想法吗?它不适用于此代码.. 请不要看“xy”之类的内容。这些值尚未调整。这只是一个测试脚本。
这是我的脚本:
DECLARE CURSOR itemsone
FOR
SELECT table_name, column_name
FROM table1
WHERE table_name LIKE 'xy';
DECLARE CURSOR itemstwo
FOR
SELECT table_name, column_name
FROM table2
WHERE table_name LIKE 'xy';
DECLARE test_sql VARCHAR(500);
---
FOR item AS itemone DO
all = SELECT column_name FROM table1 WHERE table_name = 'xy' AND column_name like 'z'
MINUS
SELECT column_name FROM table2 WHERE table_name = 'xy';
test_sql= CONCAT(CONCAT('CREATE OR REPLACE VIEW V_', 'TEST'), 'AS ( SELECT');
FOR a AS all DO
test_sql = test_sql + CONCAT(a,', ');
END FOR;
-- MORE TO FOLLOW
是的,可以根据需要多次嵌套游标。 下面是我嵌套 3 个游标的示例:
Declare Cursor_1 CURSOR FOR Select (...)
Open Cursor_1
Fetch Next From Cursor_1 Into (...)
While(@@FETCH_STATUS = 0)
Begin
Declare Cursor_2 CURSOR FOR Select (...)
Open Cursor_2
Fetch Next From Cursor_2 Into (...)
While(@@FETCH_STATUS = 0)
Begin
Declare Cursor_3 CURSOR FOR Select (...)
Open Cursor_3
Fetch Next From Cursor_3 (...)
While(@@FETCH_STATUS = 0)
Begin
(...)
Fetch Next From Cursor_3 Into (...)
End
Close Cursor_3
Deallocate Cursor_3
Fetch Next From Cursor_2 Into (...)
End
Close Cursor_2
Deallocate Cursor_2
Fetch Next From Cursor_1 Into (...)
End
CLOSE Cursor_1
DEALLOCATE Cursor_1