这个语名提示NUM1无效,求解答,这是从SQLSERVER改过来的!谢谢,兄弟没有分了declare
n number;
pageNum number;
pageIndex number;
count1 number;
num1 number;
begin 
pageNum:=10;
pageIndex:=1;
num1:= pageIndex*pageNum;
select count(*) into count1 from NBMM_USER_MSG where mType=''+1+'';
if(count1<num1)
then
n:=count1-((pageIndex-1)*pageNum);
else    
n:=pageNum;  
end if;
Execute Immediate 'select mid,mtype,m_mid,m_floor,muser,mmail,muserip,msg,muserimg,mdate,count1 as allcount from (select *  from (select * from NBMM_USER_MSG where mType=''+1+'' and rownum<=num1 order by mDate desc) A where rownum<=n  order by mDate asc ) B order by mDate desc';      
end;

解决方案 »

  1.   

    Execute Immediate ‘... rownum <= :1 order by mDate desc) A where rownum<= :2 ...'
    using num1,n;
      

  2.   

    语句层没啥问题,需要注意,oracle字符串连接用||,而不是+
      

  3.   

    execute之后的sql拼接有问题
    在oracle中用||而不是+
    如'a'||'b' ——> 'ab'
      

  4.   

    Execute Immediate 'select mid,mtype,m_mid,m_floor,muser,mmail,muserip,msg,muserimg,mdate,count1 as allcount from (select *  from (select * from NBMM_USER_MSG where mType=''+1+'' and rownum<=num1 order by mDate desc) A where rownum<=n  order by mDate asc ) B order by mDate desc'; 
    这句有问题,num1、n是变量,不能放在字符串里面,应该用连接符||连接