NVL2对时间空值的处理的问题
create or replace package testpackage as
TYPE test_cursor is ref cursor;
end testpackage;
/
--开始编写分页的过程
create or replace procedure fenye
(tableName in varchar2,
fileterStr in varchar2,--查询的条件
Pagesize in number,--一页显示记录数
pageNow in number,
myrows out number,--总记录数
myPageCount out number,--总页数
p_cursor out testpackage.test_cursor,--返回的记录集
actionType in integer --行为类型,只有点击查询的时候才计算总记录数和总页数
--而在分页查询的时候则不进行以上计算,从而节省资源
) is
--定义部分
--定义sql语句 字符串
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(pageNow-1)*Pagesize+1;
v_end number:=pageNow*Pagesize;
begin
v_sql:=' select * from ( select
NVL2(to_char(INPUT_TIME,'yyyy-mm-dd HH24:MI::SS'), INPUT_TIME,
to_date('2010-8-1','yyyy-mm-dd HH24:MI::SS') )
from '||tableName||' t1 '|| fileterStr||' )
where rn>='||v_begin||' and rn<='||v_end;
open p_cursor for v_sql;
--计算myrows和myPageCount
--组织一个sql语句
--v_sql:='select count(*) from '|| tableName ||fileterStr;
If actionType=0 then --如果当前的操作是点击查询按钮
begin
v_sql:='select count(*) from ’|| tableName||fileterStr;
--执行sql,并把返回的值,赋给myrows;
execute immediate v_sql into myrows;
--计算myPageCount
--if myrows%Pagesize=0 then这样写是错的
if mod(myrows,Pagesize)=0 then
myPageCount:=myrows/Pagesize;
else
myPageCount:=myrows/Pagesize+1;
end if;
end;
END IF;
--关闭游标
--close p_cursor;
end;
/
红色部分为出问题的地方。
如果单纯把这段运行是没问题的,这个问题困扰我很长时间了,有什么办法解决没有?
问题说到底就是:
如果时间值是空的,如何将这个空值替换成一个特定的值,避免程序调用这个存储过程出错!