sql = "select * from" + table_name+ "where OBID='"+obid+"'" ; 
上面的表面是动态的,请问在存储过程中如何实现这样的功能?

解决方案 »

  1.   

    要用动态SQL,
    execute imediate sql
      

  2.   

    create or replace procedure getResultset(tablename varchar2,rst out sys_refcursor) is
    begin
      open rst for 'select * from '||tablename;
    end;
      

  3.   

    动态的表名和execute imediate有什么关系?
    二楼的方式不行吗?
      

  4.   


      open rst for 'select * from '||tablename;
    这句话什么意思
      

  5.   

    你可以試下以下語句:CREATE OR REPLACE PROCEDURE NAME

      TABLENAME     VARCHAR2,
      V_ID          NUMBER,
      
    )
    AS
      SQL   VARCHAR2(200);
    BEGIN
      SQL='select * from '||table_name ||'where OBID=V_ID';
      EXECUTE IMMEDIATE SQL;
    END NAME;
    這個語句只能執行SELECT 語句,如果想把結果返回出來,最好再定義一個CURSOR 返回一個臨時的記錄集!