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