1
如果我这样做,一切都很好:为什么在匿名工作而不是在程序中工作?
declare
l_foo clob;
begin
select
regexp_replace(
dbms_metadata.get_ddl('USER', 'SCOTT', null) ||
dbms_metadata.GET_GRANTED_DDL ('SYSTEM_GRANT', 'SCOTT') ||
dbms_metadata.GET_GRANTED_DDL ('OBJECT_GRANT', 'SCOTT') ||
dbms_metadata.GET_GRANTED_DDL ('ROLE_GRANT', 'SCOTT')
,'"' || chr(10), '";' || chr(10))
into l_foo
from dual;
end;
/
但是,如果我在过程中把这个包:
create procedure tests is
l_foo clob;
begin
select
regexp_replace(
dbms_metadata.get_ddl('USER', 'SCOTT', null) ||
dbms_metadata.GET_GRANTED_DDL ('SYSTEM_GRANT', 'SCOTT') ||
dbms_metadata.GET_GRANTED_DDL ('OBJECT_GRANT', 'SCOTT') ||
dbms_metadata.GET_GRANTED_DDL ('ROLE_GRANT', 'SCOTT')
,'"' || chr(10), '";' || chr(10))
into l_foo
from dual;
end;
/
并执行程序“EXEC测试;”然后我捕捉到一个SCOTT类型的SCOTT,在SCOTT模式中找不到。
这是为什么,我该如何解决?
感谢 克里斯
啊哈,非常感谢! – chris 2010-12-13 20:34:42