如题,请各位帮帮忙啊

解决方案 »

  1.   

    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
      

  2.   

    恩~就是我有一个function。需要在一个存储过程中调用这个function。需要用execute immediate方式调用。怎么做啊
      

  3.   

    具体的说就是, 我有一张表A。A中存的是function的名字。还有一张表B。B中存放function的参数。两张表用ID关联。现在我需要写一个存储过程C。在C中,我要查询A表和B表。将得到的信息拼成一个v_sql.然后执行。就是这样了。
      

  4.   

    .....
    declare
       sqlstr        varchar2(1000);
       v_result      某类型;
    beginsqlstr := 'select FUNC_NAME() from table_name';
    execute immediate sqlstr into v_result;......end;
      

  5.   

      
      sqlstr='select '||方法名||' from dual ';  execute immediate  sqlstr;这个应该可以。
      

  6.   

    原来是这样的个动态法。。一个函数可能有多个参数,loop拼凑sqlstring吧。
    说实话,这也太动态了。你存储的东西,ORACLE数据字典里都有。。很匪夷所思,呵呵。
      

  7.   

    快快。有没有解决方法。我知道调用存储过程用“call ***.****”
      

  8.   

    具体咋搞啊?我的sqlstring已经拼出来了。
      

  9.   

    tempsql := 'select count(*) from SERVICE s where (s.ID = '|| m_service ||' and s.NSTATE = 0)';
    execute immediate tempsql into flag;
    flag 用来装执行语句结果。