Oracle 在存储过程的哪个部分可以使用set命令(声明或可执行)?

Oracle 在存储过程的哪个部分可以使用set命令(声明或可执行)?,oracle,sqlplus,Oracle,Sqlplus,在哪个部分,我们可以在oracle过程中编写set CMD(如set pagesize 250) 没有 这些命令是特定于sqlplus的--永远不要应用于pl/sql。如果您使用的是sqlplus,您可以在oracle客户端安装中的sqlplus\admin\glogin.sql中设置它们。无论何时打开sqlplus应用程序,都会运行此功能。它不会应用于单个过程。我看到您有一个类似的问题,带有“oracle”标记,并认为此一般性说明可能会有所帮助 SQL*Plus是一个客户端程序,它提供了一个环


在哪个部分,我们可以在oracle过程中编写set CMD(如set pagesize 250)

没有


这些命令是特定于sqlplus的--永远不要应用于pl/sql。

如果您使用的是sqlplus,您可以在oracle客户端安装中的sqlplus\admin\glogin.sql中设置它们。无论何时打开sqlplus应用程序,都会运行此功能。它不会应用于单个过程。

我看到您有一个类似的问题,带有“oracle”标记,并认为此一般性说明可能会有所帮助

SQL*Plus是一个客户端程序,它提供了一个环境,用于向Oracle数据库发出SQL命令,该数据库还具有一些指令(SET命令),用于控制客户端会话期间使用的环境和格式。您可以在所谓的“匿名块”(由BEGIN/END分隔)中输入PL/SQL代码,但此代码在运行时被解析,即使您正在执行过程代码,也不会作为过程存储在数据库中

为了进一步模糊界线,PL/SQL代码(存储过程/包以及匿名块)可能包含对DBMS_输出包的调用,该输出包生成输出,但只有在可以接收输出的客户机环境中执行时,该输出才可见。DBMS_输出的输出也存在大小限制,这可能会导致其使用出现问题

如果您试图从Oracle数据库中生成用于报告或后期处理的输出,通常有以下基于Oracle的选项:

  • 如果您有权访问数据库主机文件系统,则可以使用Oracle UTL_文件包直接写入文件。您必须在PL/SQL过程或匿名块中自己编写游标、循环和输出格式。尽管PL/SQL代码只会写入主机文件系统,但它可以从任何客户端调用

  • 如果您在其他地方需要输出,并且输出将符合DBMS_输出行和缓冲区的限制,那么如果您编写PL/SQL代码,精确输出您想要的内容,并使用SQL*加上SPOOL/SPOOL OFF指令调用此PL/SQL以将输出保存在客户机文件系统上,您就拥有了最好的格式控制

  • 如果您的输出不属于上述类别(例如,生成一个包含500个字符宽行的1亿行CSV文件),您可以通过在查询中使用适当的SQL函数来获得所需的结果,并根据需要对其进行格式化,然后使用SQL*Plus SET指令关闭所有内容(标题、分页符等)不是结果集的一部分(再次使用SPOOL/SPOOL OFF)


在Oracle 10中,最大缓冲区大小不受限制,最大行大小为32767。请阅读此处: