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;