Xmltype

select extractvalue(value(x), '//utext') value from table(XMLSEQUENCE(extract(v_xmlContent, '//utext'))) x;

該sql能夠提取出xmltype類型數據中,所有<utext></utext>標簽下的值。

 

SYS_REFCURSOR動態游標的使用

SYS_REFCURSOR為動態游標,可在運行的時候動態決定執行查詢。

REF游標可作為參數傳遞(in/out都可以)。

需注意的是,用于接收游標結果集的變量,其type與游標結果集必須完全一致,也就是列數量與數據類型能一一對應。

CREATE OR REPLACE PROCEDURE p_refcursor IS
  v_cur SYS_REFCURSOR; --定義動態游標
  TYPE t_type IS RECORD(
    v_id      VARCHAR2(3000),
    v_content clob); --自定義結果集類型
  v_result t_type; --定義一個t_type類型的變量,用來存放后續查詢結果,或table%rowtype
  --v_result test%rowtype;
  v_sql VARCHAR(3000);
BEGIN
  v_sql := 'select uniqueid,name from test'; --這里sql語句可以是動態的(拼接變量),更加靈活
  OPEN v_cur FOR v_sql; --打開游標
  FETCH v_cur
    INTO v_result; --賦值給v_result
  WHILE v_cur%FOUND LOOP --游標循環
    DBMS_OUTPUT.put_line(v_result.v_id || v_result.v_content);
    FETCH v_cur
      INTO v_result; --賦值下一條
  END LOOP;
  CLOSE v_cur; --關閉游標
END;