0


在哪个部分我们可以在oracle程序中编写set cmds(即set pagesize 250)

4

3 回答 3

1

我看到您有一个带有“oracle”标签的类似问题,并认为这种一般方向可能会有所帮助。

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

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

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

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

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

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

于 2009-06-22T19:47:26.140 回答
0

没有在哪里。

这些命令是特定于 sqlplus 的——从不应用于 pl/sql。

于 2009-06-22T16:21:26.340 回答
0

如果您使用的是 sqlplus,您可以在 oracle 客户端安装中将它们设置在 sqlplus\admin\glogin.sql 中。每当您打开 sqlplus 应用程序时,它就会运行。它不会适用于单一程序。

于 2009-06-22T16:42:22.927 回答