我需要从完整的dblink名称修剪实例名称。例如,select查询返回结果,如HHVISDEV.TRINITI.COM。我需要得到HHVISDEV。而且当然有这么多结果。所以我需要使用游标并打印最终结果。当我编译时,我得到Warning: Procedure created with compilation errors.
。当我调用该过程时,我在第1行收到错误:
ORA-06575: Package or function DELETEDBLINKS1 is in an invalid state.
任何人都可以指导我。
create or replace procedure DeleteDBLinks1 is
cursor mycursor is
SELECT SUBSTR(DB_LINK, 1, INSTR(DB_LINK, '.', 1, 1) - 1)
FROM dba_db_links;
myvar dba_db_links.dblinks%TYPE;
BEGIN
OPEN mycursor;
LOOP
FETCH mycursor
INTO myvar;
EXIT WHEN mycursor%NOTFOUND;
DBMS_OUTPUT.put_line(myvar);
END LOOP;
CLOSE mycursor;
end;
/
答案 0 :(得分:0)
如果您看到Warning: Procedure created with compilation errors
,那么,我猜,您可以在SQL * Plus中编译您的过程。在SQL * Plus中,您可以运行命令
show errors
你会看到错误列表。您的程序看起来没问题,所以我认为问题是 - 您无法访问dba_db_links
视图。请尝试使用all_db_links
或user_db_links
。
答案 1 :(得分:0)
除了Dmitry所说的你可能无法访问dba_db_links表之外,你在myvar变量定义中也有一个拼写错误。应该是:
myvar dba_db_links.db_link%TYPE;
的SQL * Plus> SHOW ERRORS将帮助您进行PL / SQL工作,直到您开始使用像SQL Developer或(我最喜欢的)PL / SQL Developer这样的PL / SQL IDE,它会自动显示错误。