日期:2014-05-17  浏览次数:20744 次

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


------解决方案--------------------
SQL code
create or replace procedure getResultset(tablename varchar2,rst out sys_refcursor) is
begin
  open rst for 'select * from '||tablename;
end;

------解决方案--------------------
你可以試下以下語句:

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 返回一個臨時的記錄集!