用动态SQL吧。declare
p_strsql varchar2(4000);
vc_bh varchar2(100);
vc_bm varchar2(100);
begin
vc_bm := 表名;
p_strsql := 'select bh into :x from ' || vc_bm ;
execute immediate p_strsql into vc_bh;
end;这样应该可以了。
p_strsql varchar2(4000);
vc_bh varchar2(100);
vc_bm varchar2(100);
begin
vc_bm := 表名;
p_strsql := 'select bh into :x from ' || vc_bm ;
execute immediate p_strsql into vc_bh;
end;这样应该可以了。
这样的问题太多了, 简单说一句:使用ref cursor 可以完成.
as type rc is ref cursor;
end; create or replace procedure FetchCount(iLowVal in number,
iHighVal in number,
TableName in varchar2,
sColumn in varchar2,
sOtherCon in varchar2,
p_cursor in out types.rc)
IS
BEGIN
open p_cursor for ' Select count(*) from ' || TableName || ' where ' ||
sColumn || ' >= :iLowVal ' || ' and ' || sColumn ||
' <= :iHighVal ' || Nvl(sOtherCon,'') using iLowVal, iHighVal; EXCEPTION WHEN OTHERS THEN
NULL;
End;
/
TYPE crTmp IS REF CURSOR;
crM crTmp;
cSQL:=cTableName;
cSQL:='SELECT * FROM '||cSQL;
OPEN crM FOR cSQL;
LOOP
--Process;
END LOOP