日期:2014-05-16  浏览次数:20739 次

请教下动态游标的问题
代码大概是这样:
create or replace procedure PRO_INDEXDATA(IN_VAR VARCHAR2,
  IN_TYPE NUMBER,
  IN_USER VARCHAR2) IS

  TYPE CUR IS REF CURSOR;
  MY_CUR CUR;
  TYPE VARRAYS IS TABLE OF VARCHAR2(500) INDEX BY BINARY_INTEGER;
  MY_VARRAY VARRAYS;
  V_SQL VARCHAR2(2000); --SQL语句
  V_COLNAME VARCHAR2(200); --列名
  V_TBNAME VARCHAR2(200); --表名
  V_TB_COUNT NUMBER(8); --表统计数量
  V_COL_COUNT NUMBER(8); --列统计数量
  V_ROWID VARCHAR2(20); --统计出ROWID
  V_USER VARCHAR2(20); --用户
  TYPE_EXCEPTION EXCEPTION;

  cursor A_CUR(CUR_USER_A VARCHAR2) is
  SELECT TABLE_NAME
  FROM ALL_TABLES
  WHERE OWNER = CUR_USER_A
  AND TABLE_NAME <> 'AAA_TEMP';
  AAA A_CUR%rowtype;

  。。。

begin

  IF IN_USER IS NULL THEN
  V_USER := USER;
  ELSE
  V_USER := UPPER(IN_USER);
  END IF;
dbms_output.put_line(V_USER);----能打印出
  FOR AAA IN A_CUR(V_USER) LOOP

  dbms_output.put_line(3);--打印不出,直接从游标里跳出去。调试时,也能看到V_USER的值已经有,为什么打开游标后,就查不出数据了。我自己运行游标是有数据的
  ...

end;




------解决方案--------------------
探讨
在当前用户下,查当前用户里的数据有数据,为什么当前用户去查其他用户里的表,却没数据,不是权限问题,证明过有查询表的权限