oracle內置程序包
SET SREVEROUTPUT ON;
--//擴大緩衝區
SET SERVEROUTPUT ON size 10000;
SQL> connect sys/beyond as sysdba
已連接。
SQL> drop directory TEST_DIR;
目錄已丟棄。
SQL> CREATE DIRECTORY TEST_DIR AS 'C:/DEVELOP';
目錄已創建。
SQL> GRANT READ,WRITE ON DIRECTORY TEST_DIR TO SCOTT;
授權成功。
SQL> connect scott/tiger
--//調用函數DBMS_XMLQuery.getXml把查詢結果以CLOB類型的XML信息輸出
SET PAGESIZE 1000;
SET LONG 20000;
SELECT DBMS_XMLQuery.getXml('SELECT * FROM stuInfo WHERE rownum < 5') FROM dual;
--//ora 9.2
DECLARE
result CLOB;
output_file UTL_FILE.FILE_TYPE;
xmlstr VARCHAR2(32767);
line VARCHAR2(2000);
line_no INTEGER := 1;
BEGIN
result := DBMS_XMLQuery.getXml('SELECT * FROM stuInfo WHERE rownum < 5');
xmlstr := DBMS_LOB.SUBSTR(result,32767);
output_file := UTL_FILE.FOPEN('TEST_DIR','emp.xml','w');--打開
LOOP
EXIT WHEN xmlstr IS NULL;
line := SUBSTR(xmlstr,1,INSTR(xmlstr,CHR(10))-1);
DBMS_OUTPUT.PUT_LINE(line_no || ':' || line);
UTL_FILE.PUT(output_file,line || CHR(10));
xmlstr := SUBSTR(xmlstr,INSTR(xmlstr,CHR(10))+1);
line_no := line_no + 1;
END LOOP;
UTL_FILE.FCLOSE(output_file);--關閉
END;
/
--//隨機數據
DECLARE
l_num NUMBER;
counter NUMBER;
BEGIN
counter:=1;
WHILE counter <= 10
LOOP
l_num := DBMS_RANDOM.RANDOM;
DBMS_OUTPUT.PUT_LINE(l_num||'--'||ABS(l_num MOD 100));
counter:=counter+1;
END LOOP;
END;
--//讀取文件
DECLARE
input_file UTL_FILE.FILE_TYPE;
input_buffer VARCHAR2(4000);
BEGIN
input_file := UTL_FILE.FOPEN(
'TEST_DIR', 'emp.xml', 'r');
LOOP
UTL_FILE.GET_LINE(input_file,input_buffer);
DBMS_OUTPUT.PUT_LINE(input_buffer);
END LOOP;
UTL_FILE.FCLOSE(input_file);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('------------------');
END;
--//ora 9.0
DECLARE
TYPE fType IS RECORD (id BINARY_INTEGER, datatype BINARY_INTEGER);
result CLOB;
output_file fType;
xmlstr VARCHAR2(32767);
line VARCHAR2(2000);
line_no INTEGER := 1;
BEGIN
result := DBMS_XMLQuery.getXml('SELECT * FROM stuInfo WHERE rownum < 5');
xmlstr := DBMS_LOB.SUBSTR(result,32767);
output_file := UTL_FILE.FOPEN('TEST_DIR','emp.xml','w');--打開
LOOP
EXIT WHEN xmlstr IS NULL;
line := SUBSTR(xmlstr,1,INSTR(xmlstr,CHR(10))-1);
DBMS_OUTPUT.PUT_LINE(line_no || ':' || line);
UTL_FILE.PUT(output_file,line || CHR(10));
xmlstr := SUBSTR(xmlstr,INSTR(xmlstr,CHR(10))+1);
line_no := line_no + 1;
END LOOP;
UTL_FILE.FCLOSE(output_file);--關閉
END;