Plsql 过程中游标和SUBSTR的用法
我需要从完整的dblink名称中删除实例名称。例如,select查询返回的结果类似于HHVISDEV.TRINITI.COM。我需要找维斯戴夫。当然,有这样多的结果。所以我需要使用游标并打印最终结果。我在编译时收到Plsql 过程中游标和SUBSTR的用法,plsql,cursor,substr,Plsql,Cursor,Substr,我需要从完整的dblink名称中删除实例名称。例如,select查询返回的结果类似于HHVISDEV.TRINITI.COM。我需要找维斯戴夫。当然,有这样多的结果。所以我需要使用游标并打印最终结果。我在编译时收到警告:创建的过程有编译错误。。当我调用该过程时,第1行出现错误: ORA-06575:程序包或函数deletedDBLinks1处于无效状态。请任何人指导我 create or replace procedure DeleteDBLinks1 is cursor mycursor
警告:创建的过程有编译错误。
。当我调用该过程时,第1行出现错误:
ORA-06575:程序包或函数deletedDBLinks1处于无效状态。
请任何人指导我
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;
/
如果您看到
警告:使用编译错误创建的过程
,那么我猜您可以使用SQL*Plus编译您的过程。在SQL*Plus中,您可以运行命令
show errors
您将看到错误列表。您的过程看起来还可以,所以我认为问题是-您无法访问
dba\u db\u链接
视图。尝试使用所有数据库链接
或用户数据库链接
。除了Dmitry所说的您可能无法访问dba\u db\u链接表之外,myvar变量定义中也有输入错误。应该是:
myvar dba_db_links.db_link%TYPE;
SQL*Plus>显示错误将帮助您进行PL/SQL工作,直到您开始使用SQL Developer或(我最喜欢的)PL/SQL Developer之类的PL/SQL IDE,它将自动显示错误。您遇到的编译错误是什么?