当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle数据库的输出方法调试

Oracle
常见的一些Oracle初学者的问题
ORACLE认证系统概述
数据库考试简介:Oracle认证
Oracle认证基础知识介绍
ADO连接Oracle Access示例及记录集处理源码
SQL Server和MySQL的安全性分析
用Oracle和SQL Server数据库组合利弊分析
Oracle 11g分区功能新革命
Flashback Query 恢复误删除的数据
基于Oracle高性能动态SQL程序开发
怎样在Oracle 9i中正确的转换时区
Oracle 10g导出的数据库能否导入Oracle 9i?
增加Distinct后查询效率反而提高
Oracle限制返回结果集的大小
Java语言数据库操作的基本流程
美国甲骨文(ORACLE)公司入驻渝中区大都会商厦
RHEL AS4上安装oracle 10R2 的方法
DB中如何查询Table占用空间的大小
编写高质量高性能的MySQL语法
Oracle数据库自动备份的具体实现步骤

Oracle数据库的输出方法调试


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 82 ::
收藏到网摘: n/a

 1.最基本的DBMS_OUTPUT.PUT_LINE()方法

  随便在什么地方,只要是BEGIN和END之间,就可以使用DBMS_OUTPUT.PUT_LINE(output);

  然而这会有一个问题,就是使用该函数一次最多只可以显示255个字符,否则缓冲区会溢出。

  此外,函数DBMS_OUTPUT.ENABLE(20000)这种函数,仅仅是设置整个过程的全部输出缓冲区大小,而非DBMS_OUTPUT.PUT_LINE()的缓冲区大小。

  对于超过255个字符的变量,使用DBMS_OUTPUT.PUT_LINE()方法是没有效的。据说在Oracle10中,解除了这个限制,可以输出任意大小的字符串。


  declare
  output varchar2(200);
  begin
  output:=''...''; //赋值
  DBMS_OUTPUT.PUT_LINE(output);
  end;

  如果以上执行结果成功但没有显示请执行 set serveroutput on; 然后就可以了;

  2.使用表的方法

  首先建立一张表,然后在PL/SQL中将要输出的内容插到表中。然后再从表中查看内容。对于这种方法一次可以输出几千个字符。

  (1) create table my_output{


  id number(4),
  txt varchar2(4000)
  );

  (2) declare


  output varchar2(4000);
  strSql varchar2(4500);
  count number(4):=0;
  begin
  strSql:=''delete * from my_output'';
  EXECUTE IMMEDIATE strSql;
  output:=''...''; //赋值
  count:=count+1;
  strSql:=''Insert into my_output value (count,''''''||output||'''''')'';
  --''''在单引号中相当于字符''
  EXECUTE IMMEDIATE strSql;
  end;

  3.使用输出文件的方法

  如果变量非常大,以致连使用表都没有办法插入时,只有使用文件方式了。

  (1) create or replace directory TMP as ''d:\testtmp'';

  --建立一个文件夹路径

  (2) declare


  file_handle UTL_FILE.FILE_TYPE;
  output varchar2(30000);
  begin
  output:="....";
  file_handle := UTL_FILE.FOPEN(''TMP'', ''output.txt'', ''w'',[1-32767]);

  --四个参数:目录,文件名,打开方式,最大行数(默认为2000)


  UTL_FILE.PUT_LINE(file_handle, output);
  UTL_FILE.FCLOSE(file_handle);
  exception
  WHEN utl_file.invalid_path THEN
  raise_application_error(-20000, ''ERROR: Invalid path for file or path not in INIT.ORA.'');
  end;