Plsql 游标内部的游标和如何传递变量
我需要做两个游标或者一个游标和一个循环。但是一个必须在另一个里面。我正在尝试使用两个游标和一个for,但无法识别外部游标的name表的变量值。 你能帮我吗?你能告诉我做这些最好的方法吗?我是pl/sql的新手。谢谢我把代码放在:Plsql 游标内部的游标和如何传递变量,plsql,Plsql,我需要做两个游标或者一个游标和一个循环。但是一个必须在另一个里面。我正在尝试使用两个游标和一个for,但无法识别外部游标的name表的变量值。 你能帮我吗?你能告诉我做这些最好的方法吗?我是pl/sql的新手。谢谢我把代码放在: DECLARE TABLENAME VARCHAR2(30); LINK VARCHAR2(30); CURSOR FIRST_SELECT IS SELECT A.TABLE_NAME AS TABLENAME, B.LINK AS LINK
DECLARE
TABLENAME VARCHAR2(30);
LINK VARCHAR2(30);
CURSOR FIRST_SELECT IS
SELECT A.TABLE_NAME AS TABLENAME, B.LINK AS LINK
FROM ALL_TABLES A, TABLE_CONNECT_LINK B
WHERE A.TABLE_NAME=B.COMPARE_TABLE;
BEGIN
OPEN FIRST_SELECT;
LOOP
FETCH FIRST_SELECT INTO TABLENAME,LINK;
EXIT WHEN FIRST_SELECT%NOTFOUND;
DECLARE
PEPELU VARCHAR2(4000);
TABLE VARCHAR2(70);
stringconsult VARCHAR2(4000);
COMPONENTE NUMBER(5);
TABLE_INSERTAR VARCHAR2(30);
COLUMN VARCHAR2(30);
OWNER VARCHAR2(30);
CURSOR ALL IS
SELECT TABLE,COLUMN,OWNER FROM TABLENAME;
BEGIN
OPEN ALL;
LOOP
FETCH ALL INTO TABLE,COLUMN,OWNER;
EXIT WHEN ALL%NOTFOUND;
stringconsult:='select ' || owner||','|| TABLE||','|| COLUMN||' from ' || INSERTNAME || ' minus select owner, table_name, column_name from all_tab_columns@'|| LINK||'';
DBMS_OUTPUT.PUT_LINE(stringconsult || ';');
DBMS_OUTPUT.PUT_LINE('COMMIT;');
COMMIT;
END LOOP;
CLOSE ALL;
END;
END LOOP;
CLOSE FIRST_SELECT;
END;
/
不能将变量的内容用作表名。您需要使用动态SQL。祝您好运。如果功能与示例相同,您可以简单地将第二个循环声明为存储过程,并将tablename和link作为参数传递,另外您不需要重新声明循环中的每个变量,我建议你在上面和其他人一起声明它们,然后重新分配值。你是说第二次只看for和不看cursor吗?ThanksI正在尝试使用带有for的存储过程,但它给出了表或视图不存在的条件:在varchar2中创建或替换过程差异表,在varchar2中链接为SELECT*FROM表循环DBMS\u OUTPUT.PUT\u LINEtable中的begin for I;端环;终止