Fork me on GitHub

Oracle系统工具包(学习笔记)

Dbms_Output包

 

No.

子程序名称

描述

1

enable

打开缓冲区,当用户使用

“SET SERVEROUTPUT ON”命令时,自动调用此语句

2

disable

关闭缓冲区,当用户使用

“SET SERVEROUTPUT OFF”命令时,自动调用此语句

3

put

将内容保存到缓冲区中,不包含换行符,等执行put_line时一起输出

4

put_line

直接输出指定内容,包括换行符

5

new_line

在行尾添加换行符,在使用PUT时必须依靠new_line来添加换行符

6

get_line

获取缓冲区中的单行信息

子程序定义:“procedure   get_line(line out varchar2, status out integer);”

参数作用: line:被get_line取回的行;

status:是否取回一行,如果设置为1表示取回一行,如果0表示没有取回数据。

7

get_lines

以数组的形式来获取缓冲区中的所有信息

子程序定义:“procedure get_lines(lines out chararr,   numlines in out integer);”

参数作用:

line:被get_line取回的行,是一个CHARARR类型,此类型是一个VARCHAR2(255)的嵌套表,

会返回缓冲区的多行信息;

 status:是否取回一行,如果设置为1表示取回一行,如果0表示没有取回数据;

numlines:如果作为输入参数表明要返回的行数;作为返回参数表示实际取回的行数。

 

示例一、设置输出打开,enable和关闭disable

BEGIN
  dbms_output.enable;  --启用缓冲
  dbms_output.put_line('可以显示');
END;
BEGIN
  dbms_output.disable;  --关闭缓冲
  dbms_output.put_line('不可以显示');
END;

示例二、设置缓冲区

BEGIN
   dbms_output.enable;  --启用缓冲
  dbms_output.put('www');            --向缓冲区中增加内容
  dbms_output.put('163.com');            --向缓冲区中增加内容
  dbms_output.new_line;              --换行,输出之间缓冲区的内容
  dbms_output.put('www.baidu.com');            --向缓冲区中增加内容
  dbms_output.new_line;               --换行,输出之间缓冲区的内容
    dbms_output.put('www.qq.com');            --向缓冲区中增加内容
END;
结果:
www163.com
www.baidu.com
最后一行因为没有换行,此内容不输出

示例三、使用get_line()和get_lines()函数取回缓冲区数据

 

DECLARE
v_line1       VARCHAR2(200);
v_line2       VARCHAR2(200);
v_status       NUMBER;
BEGIN
   dbms_output.enable;  --启用缓冲
  dbms_output.put('www.baidu.com');            --向缓冲区中增加内容
  dbms_output.new_line;               --换行,输出之间缓冲区的内容
    dbms_output.put('www.qq.com');            --向缓冲区中增加内容
     dbms_output.new_line;               --换行,输出之间缓冲区的内容
     dbms_output.get_line(v_line1,v_status); --读取缓冲区一行  
     dbms_output.get_line(v_line2,v_status); --读取缓冲区一行  
     dbms_output.put_line(v_line1); --读取缓冲区一行  
     dbms_output.put_line(v_line2); --读取缓冲区一行  
END;
-------------
DECLARE
v_lines       dbms_output.chararr;            --定义charrarr变量


v_status       NUMBER;
BEGIN
   dbms_output.enable;  --启用缓冲
  dbms_output.put('www.baidu.com');            --向缓冲区中增加内容
  dbms_output.new_line;               --换行,输出之间缓冲区的内容
    dbms_output.put('www.qq.com');            --向缓冲区中增加内容
     dbms_output.new_line;               --换行,输出之间缓冲区的内容
     dbms_output.get_lines(v_lines,v_status); --读取缓冲区一行  
     FOR x IN 1..v_lines.count LOOP
     dbms_output.put_line(v_lines(x)); --读取缓冲区一行  
     END LOOP;
END;

 

DBMS_ASSERT包
No. 子程序 描述
1 ENQUOTE_LITERAL 接收一个字符串,并且在字符串的前后都加上单引号
2    
3    
4    
5    
6    
7    

 

 

 

 

示例四、为字符串的前后都加上单引号

SELECT dbms_assert.ENQUOTE_LITERAL('www.hellojava') FROM dual;

示例五、为字符串的前后都加上双引号

 

SELECT dbms_assert.ENQUOTE_NAME('www.hellojava') FROM dual;

示例六、验证字符串是否为有效模式对象名

 

SELECT dbms_assert.QUALIFIED_SQL_NAME('hello_orcale') FROM dual;

示例七、输入错误的械对象

SELECT dbms_assert.QUALIFIED_SQL_NAME('123') FROM dual;
--对象名不能以数字开头

示例八、验证字符串是否为有效模式名

 

SELECT dbms_assert.SCHEMA_NAME('SCOTT') FROM dual;

要求模式名全部大写

示例九、输入错误模式名

SELECT dbms_assert.SCHEMA_NAME('tests') FROM dual;

不能小写模式名

 

posted @ 2015-01-11 20:15  森林森  阅读(838)  评论(0编辑  收藏  举报