日期:2014-05-17 浏览次数:21529 次
CREATE OR REPLACE PROCEDURE TEST_1 (P_IN_TBNAME IN VARCHAR2) IS
  REF_CUR SYS_REFCURSOR ;
  V_SQL   VARCHAR2(2000) ;
  V_ROWID ROWID ;
BEGIN
  V_SQL := 'SELECT ROWID FROM '|| P_IN_TBNAME  ;
  OPEN REF_CUR FOR V_SQL ;
  LOOP
  FETCH REF_CUR INTO V_ROWID;
  EXIT WHEN REF_CUR%NOTFOUND;
  DBMS_OUTPUT.PUT_LINE(V_ROWID) ;
  END LOOP ;
  --business process 
  CLOSE REF_CUR ;
EXCEPTION 
  WHEN OTHERS THEN
    --exception handle
    RAISE ;
END ;
/
SQL> CREATE TABLE TST1 (X INT) ;
 
Table created
 
SQL> INSERT INTO TST1 VALUES (1) ;
 
1 row inserted
 
SQL> SET SERVEROUTPUT ON ;
SQL> EXEC TEST_1('TST1') ;
 
AAATeuAAHAAAAuHAAA
 
PL/SQL procedure successfully completed
------解决方案--------------------
根据LZ的意思大概改成这样子。。
create or replace procedure case_to_province(table_name in varchar2, id_name in varchar2) 
  declare cur is ref cursor ;
v_id table_name.id%type;
 test_cursor cur;
 begin
open test_cursor for  select id from table_name where name=id_name; 
loop 
fetch test_coursor in v_id;
exit when test_cursor%not found;
end loop;
end;
/