Опишите в SQL * Plus - он вызывает пакет или запускает SQL? (Или что-то другое?) - PullRequest
4 голосов
/ 14 октября 2011

Когда я описываю ТИП Oracle в SQL * Plus, что делает SQL * Plus «под капотом» - вызывает ли он DBMS_METADATA (или аналогичный)?Или это прямой запрос к словарю данных?

Или что-то совсем другое?

1 Ответ

3 голосов
/ 04 января 2012

Вы, очевидно, можете использовать alter session set sql_trace=true для ответа на такие вопросы.

Для

create type desc_type as object (
 dummy varchar2(1),

 constructor function desc_type (a number) return self as result,

 final member procedure m 

);
/

alter session set sql_trace=true;

desc desc_type

alter session set sql_trace=false;

drop type desc_type
/

Я нахожу следующие соответствующие операторы SQL в моем файле трассировки:

select procedure#,procedurename,properties,itypeobj# 
  from procedureinfo$ where obj#=:1 
 order by procedurename desc, overload# desc

select position#,
       sequence#,
       level#,
       argument,
       type#,
       charsetid,
       charsetform,
       properties,
       nvl(length, 0),
       nvl(precision#, 0),
       nvl(scale, 0),
       nvl(radix, 0),
       type_owner,
       type_name,
       type_subname,
       type_linkname,
       pls_type 
  from argument$ 
 where obj#=:1 and procedure#=:2 order by sequence# desc

select max(procedure#) from procedurec$ where obj#=:1

select max(procedure#) from procedureplsql$ where obj#=:1

select max(procedure#) from procedurejava$ where obj#=:1

select procedure#,entrypoint# from procedurec$ 
 where obj#=:1 order by procedure#

select procedure#,entrypoint# 
 from procedureplsql$ where obj#=:1 order by procedure#

select procedure#,ownerlength,classlength,methodlength,siglength, flagslength,cookiesize 
  from procedurejava$ where obj#=:1 order by procedure#

select ownername,classname,methodname,signature,flags 
  from procedurejava$ where obj#=:1 and procedure#=:2 order by procedure#

select count(*) 
  from vtable$ where obj#=:1

select vindex,itypetoid,imethod#,iflags,itypeowner,itypename 
  from vtable$ where obj#=:1 order by vindex

select externtype, externname 
  from type$ where tvoid=:1

Итак, под капотом SQL * Plus использует простой SQL.

...