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;
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;
不能小写模式名