declare v_tbname varchar2(30); v_sql varchar2(100); emp_row emp%rowtype; begin select sname into v_tbname from a where a.id=100; dbms_output.put_line(v_tbname); v_sql:='select * from '||v_tbname ||' where ROWNUM=1' ; dbms_output.put_line(v_sql); execute immediate v_sql into emp_row; dbms_output.put_line(emp_row.ename||' '||emp_row.SAL||' '||emp_row.JOB); end; SELECT * FROM EMP declare str varchar2(500); c_1 varchar2(10); r_1 emp%rowtype; begin c_1:='SCOTT'; str:='select * from emp where ename=:c AND ROWNUM=1'; execute immediate str into r_1 using c_1; DBMS_OUTPUT.PUT_LINE(R_1.eNAME||' '||R_1.SAL||' '||R_1.DEPTNO); end ; select * from emp where ename='SCOTT' AND ROWNUM=1
v_tbname varchar2(30);
v_sql varchar2(100);
emp_row emp%rowtype;
begin
select sname into v_tbname from a where a.id=100;
dbms_output.put_line(v_tbname);
v_sql:='select * from '||v_tbname ||' where ROWNUM=1' ;
dbms_output.put_line(v_sql);
execute immediate v_sql into emp_row;
dbms_output.put_line(emp_row.ename||' '||emp_row.SAL||' '||emp_row.JOB);
end;
SELECT * FROM EMP
declare
str varchar2(500);
c_1 varchar2(10);
r_1 emp%rowtype;
begin
c_1:='SCOTT';
str:='select * from emp where ename=:c AND ROWNUM=1';
execute immediate str into r_1 using c_1;
DBMS_OUTPUT.PUT_LINE(R_1.eNAME||' '||R_1.SAL||' '||R_1.DEPTNO);
end ;
select * from emp where ename='SCOTT' AND ROWNUM=1
declare
sqlstr varchar2(1000);
v_result 某类型;
beginsqlstr := 'select FUNC_NAME() from table_name';
execute immediate sqlstr into v_result;......end;
sqlstr='select '||方法名||' from dual '; execute immediate sqlstr;这个应该可以。
说实话,这也太动态了。你存储的东西,ORACLE数据字典里都有。。很匪夷所思,呵呵。
execute immediate tempsql into flag;
flag 用来装执行语句结果。