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

ORACLE语法,新手求解答
这个语名提示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;

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

------解决方案--------------------
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是变量,不能放在字符串里面,应该用连接符
------解决方案--------------------
连接