当前位置: 代码迷 >> Oracle管理 >> 关于游标,错误等有关问题
  详细解决方案

关于游标,错误等有关问题

热度:65   发布时间:2016-04-24 04:17:14.0
关于游标,异常等问题
有以下代码,请各位帮我看看哪里出现问题了,异常出现在第12行和第18行

create or replace procedure proc_trade
as
v_cname user_tab_columns.COLUMN_NAME%type;
v_cvalue varchar2(50);
cursor t_columname is select column_name as b from user_tab_columns where table_name='MDM_CUSTEPMASTER';
begin
  open t_columname;
  loop
    fetch t_columname into v_cname;
    exit when t_columname%notfound;
    select v_cname into v_cvalue from mdm_custepmaster where trim(v_cname)='Y';
    exception

      when no_data_found then dbms_output.put_line('没有数据');
      when too_many_rows then dbms_output.put_line(v_cname);
      when others then dbms_output.put_line('错误情况不明');
    end loop;
    close t_columname;
 end;

------解决方案--------------------
给你一个函数,参数为要执行的select语句,返回值为select语句的执行结果
FUNCTION GetValue (P_SQL in varchar2) RETURN varchar2 IS
  str varchar2(500);
mycursor INTEGER; 
ignore INTEGER;
begin
mycursor := dbms_sql.open_cursor;
dbms_sql.parse(mycursor,P_SQL,1);
  DBMS_SQL.DEFINE_COLUMN(mycursor,1,str,500); 
ignore := dbms_sql.execute(mycursor);
if DBMS_SQL.FETCH_ROWS(mycursor)<> 0 then
DBMS_SQL.COLUMN_VALUE(mycursor,1,str);
end if;
dbms_sql.close_cursor(mycursor);
return str;
END;
  相关解决方案