create or replace procedure SaveStock2 as  
str_sql varchar2(500); 
begin          str_sql:= ' insert into  tf_test  select * from(select tf2.*,row_number()over(partition by stock_id order by cjdate desc) rn from tf2 ) where rn  <=1 '; 
        execute immediate str_sql; 
         commit;  
         exception  
                     when    others    then  
                     rollback;  
                     dbms_output.put_line(SQLERRM);  end;这个存储过程执行后没有向tf_test中插入任何数据,但是单独运行str_sql内的代码却又可以插入数据,实在不知道为什么,本人用的oracle是8i版本的,一开始的时候没有用动态sql的时候会报编译错误,后来改用动态sql也就是如上的形式,却有发现语句无效,请问分析函数row_number()over(partition by)是不是不能用在存储过程中呢?