Мы опрашиваем словарь данных, чтобы получить данные, которые нам нужны, чтобы нарисовать диалог, подобный этому:
Вы можете увидеть SQL, за которым мы работаемсцены, чтобы получить эти данные, затем мы просто динамически генерируем код, который вы видите в анонимном блоке.
Например, мы запускаем это, чтобы получить список аргументов для вашей процедуры пакета:
SELECT position,
argument_name,
data_level,
data_type,
in_out,
CASE
WHEN char_used = 'C' THEN
char_length
ELSE
data_length
END data_length,
data_precision,
data_scale,
type_owner,
type_name,
type_subname,
pls_type
FROM sys.dba_arguments
WHERE owner = :owner
AND object_id = :id
AND object_name = :name
AND nvl(overload, '0') = :overload
ORDER BY sequence
Когда вы нажимаете «ОК», мы запускаем это через наш Script Engine, который может обрабатывать практически все, что может SQLPlus ... и который включает в себя захват SERVEROUTPUT, например, содержимого буфера DBMS_OUTPUT.
Вы можете быстро увидеть SQLмы запускаем соединение JDBC с Oracle на панели журнала ... остальное - НАШ Java-код, и вы можете воспроизводить его любым способом.