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

oracle中的select into语句的动态查询
具体的意思是这样的:
CREATE   OR   REPLACE   FUNCTION   testExecute   RETURN   NUMBER   IS
tmpVar   NUMBER;
sqltemp   varchar2(200);
 
BEGIN
      tmpVar   :=   0;
     
      sqltemp   :=   'select   count(*)   into   tmpVar   from   gg_book   ';
     
      --execute   immediate   sqltemp;
     
      select   count(*)   into   tmpVar   from   gg_book;
     
     
      RETURN   tmpVar;
     
END   testExecute;

我使用--execute   immediate   sqltemp;就提示错误,请那位大哥给点提示,谢谢了!

------解决方案--------------------
execute immediate 主要用来执行DDL,函数中不能使用DDL。
查询时直接执行select into即可,不要用execute immediate。
------解决方案--------------------
execute immediate
用来执行单行操作。select into属于当行操作时可行的!
------解决方案--------------------
sqltemp := 'select count(*) from gg_book ';

execute immediate sqltemp into tmpVar; --应该这样使用