Plsql 我可以从存储过程调用SQL开发人员PL/SQL格式化吗

Plsql 我可以从存储过程调用SQL开发人员PL/SQL格式化吗,plsql,oracle-sqldeveloper,code-formatting,Plsql,Oracle Sqldeveloper,Code Formatting,在Oracle SQL Developer中,当我右键单击Function、Procedure或Package类型的对象时,上下文菜单中有一个选项可以选择“Run”或“Profile”。该对话框将显示“目标”、“参数”和“PL/SQL块”字段。 “PL/SQL块”显示一个示例代码段,以运行作为匿名块编写的程序,并对其进行格式化 我的问题:这是如何构建的,我可以在它周围放置一个过程,以便从数据库中调用它吗 如果可能,我需要调用可执行文件/jave/etc的参数列表(对象名、所有者、?)。 然后我会

在Oracle SQL Developer中,当我右键单击Function、Procedure或Package类型的对象时,上下文菜单中有一个选项可以选择“Run”或“Profile”。该对话框将显示“目标”、“参数”和“PL/SQL块”字段。 “PL/SQL块”显示一个示例代码段,以运行作为匿名块编写的程序,并对其进行格式化

我的问题:这是如何构建的,我可以在它周围放置一个过程,以便从数据库中调用它吗

如果可能,我需要调用可执行文件/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或developer运行程序以获得结果。这对于新的功能文档(包括技术规范中的代码片段)或简单地在数据库中获取“模板”非常有用,因此我可以轻松地更改参数值并执行

我主要是一名Oracle开发人员(自学了6年),对Java或C#等方面的工作了解很少,因此,如果无法通过存储过程轻松调用,则无需对响应进行详细说明。
提前感谢。

我们查询数据字典以获取绘制如下对话框所需的数据:

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;
/

您可以看到我们在后台运行的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”时,我们通过脚本引擎运行它,它可以处理SQLPlus可以处理的任何事情,包括捕获SERVEROUTPUT(如DBMS_输出缓冲区内容)


您可以在日志面板中快速查看我们通过JDBC连接到Oracle运行的SQL…其余的是我们的Java代码,您可以通过任何方式进行复制。

我再次阅读了您的问题,我无法判断您是否真的只想调用我们的代码格式化程序,请参阅我的答案和回复…对,我假设有逻辑来询问dba_参数和可能的dba_过程——至少这是我开发两部分解决方案中的第一部分的方法。第二件事是一旦我有了一个动态构建的块,那么我该如何格式化它。因此,当我看到SQL Developer已经具备了这两种功能时,我希望有一种方法可以简单地编写一个包装程序,调用任何方法或内置的dbms*类包,在幕后使用它来编写样本和格式化样本,并将其作为对象/lob或输出传回。是的,部分是SQL,部分是Java。我们有一个命令行界面来格式化缓冲区或文件,它叫做SQLcl,并且有一个格式化命令。