oracle內置程序包

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章