我可以调用 SQL 开发人员 PL/SQL 从存储过程格式化
Can I Call SQL Developer PL/SQL Formatting From a Stored Procedure
在 Oracle SQL Developer 中,当我右键单击函数、过程或包类型的对象时,我在上下文菜单中有一个选项 'Run' 或 'Profile'。对话框会显示 'Target'、'Parameters' 和 'PL/SQL Block' 的字段。
'PL/SQL Block' 显示示例代码片段 运行 作为匿名块编写的程序,它被格式化。
我的问题:这是如何构建的,我可以围绕它放置一个过程以便我可以从数据库中调用它吗?
如果可能的话,我需要参数列表(对象名称、所有者、??)来调用executable/jave/etc。
然后我会创建这样的东西:
create procedure pretty_print_sample_code(...some parameter list needed by developer method..) is
begin
..do some checks
..invoke the developer code
..output result as clob or line by line the result
end pretty_print_sample_code;
/
然后从 sqlplus 或开发人员那里我可以 运行 程序来获得我的结果。这可能对新功能文档(包括技术规范中的代码片段)有用,或者只是有一种方法可以在数据库中获取 'template',这样我就可以轻松更改参数值并执行。
我主要是一名 Oracle 开发人员(自学 6 年),对 Java 或 C# 等的工作知识很少,因此如果不能通过存储过程轻松调用它,那么不需要一个非常详细的回应。
提前致谢。
我们查询数据字典以获取绘制如下对话框所需的数据:
你可以看到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
当您单击 'OK' 时,我们 运行 通过我们的脚本引擎,它几乎可以处理任何事情 SQL此外还可以...并且包括捕获 SERVEROUTPUT,例如 DBMS_OUTPUT缓冲区内容。
您可以快速看到 SQL 我们正在 运行 通过 JDBC 连接到日志面板中的 Oracle...剩下的是我们的 Java代码,并供您通过任何方式进行重现。
在 Oracle SQL Developer 中,当我右键单击函数、过程或包类型的对象时,我在上下文菜单中有一个选项 'Run' 或 'Profile'。对话框会显示 'Target'、'Parameters' 和 'PL/SQL Block' 的字段。 'PL/SQL Block' 显示示例代码片段 运行 作为匿名块编写的程序,它被格式化。
我的问题:这是如何构建的,我可以围绕它放置一个过程以便我可以从数据库中调用它吗?
如果可能的话,我需要参数列表(对象名称、所有者、??)来调用executable/jave/etc。 然后我会创建这样的东西:
create procedure pretty_print_sample_code(...some parameter list needed by developer method..) is
begin
..do some checks
..invoke the developer code
..output result as clob or line by line the result
end pretty_print_sample_code;
/
然后从 sqlplus 或开发人员那里我可以 运行 程序来获得我的结果。这可能对新功能文档(包括技术规范中的代码片段)有用,或者只是有一种方法可以在数据库中获取 'template',这样我就可以轻松更改参数值并执行。
我主要是一名 Oracle 开发人员(自学 6 年),对 Java 或 C# 等的工作知识很少,因此如果不能通过存储过程轻松调用它,那么不需要一个非常详细的回应。 提前致谢。
我们查询数据字典以获取绘制如下对话框所需的数据:
你可以看到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
当您单击 'OK' 时,我们 运行 通过我们的脚本引擎,它几乎可以处理任何事情 SQL此外还可以...并且包括捕获 SERVEROUTPUT,例如 DBMS_OUTPUT缓冲区内容。
您可以快速看到 SQL 我们正在 运行 通过 JDBC 连接到日志面板中的 Oracle...剩下的是我们的 Java代码,并供您通过任何方式进行重现。