Oracle日常

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;

 

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐