上面写的没错,但是在字段上通常能不加函数就不要加,否则会影响效率。所以改成: ... BEGIN SQL := 'select * from table1 where upd_date>=to_date(''' || TO_CHAR (id_date, 'yyyymmdd') || ''',''yyyymmdd'')'; ... END;
--为了处理需要,这里最好传varchar2,这样你调用也方便,过程处理也方便 --但最好要保证是合法的日期如'2002-12-18 10:10:10',如果传入是date, --照上面KingSunSha(弱水三千)的语句合并法 produce a (id_date in varchar2) as --200吧,50有点短,没有必要给初值 lv_sql varchar(200); --定义aa为一个ref cursor,这个语句如果用到包,可以写到包头里 type aa is ref cursor; --这里反了吧,应当是定义mycursor为aa mycursor aa; begin --合并你的语句,date类型需要转换,这里''代表字符串中一个' --'yyyy-mm-dd hh24:mi:ss'可以自己定义 sql='select * from table1 where upd_date >=to_date(''' || id_date || ''',''yyyy-mm-dd hh24:mi:ss''); open mycursor for sql; --异常处理需要语句。 execption when others then raise; end a;
...
BEGIN
SQL := 'select * from table1 where upd_date>=to_date('''
|| TO_CHAR (id_date, 'yyyymmdd')
|| ''',''yyyymmdd'')';
...
END;
--但最好要保证是合法的日期如'2002-12-18 10:10:10',如果传入是date,
--照上面KingSunSha(弱水三千)的语句合并法
produce a (id_date in varchar2)
as
--200吧,50有点短,没有必要给初值
lv_sql varchar(200);
--定义aa为一个ref cursor,这个语句如果用到包,可以写到包头里
type aa is ref cursor;
--这里反了吧,应当是定义mycursor为aa
mycursor aa;
begin
--合并你的语句,date类型需要转换,这里''代表字符串中一个'
--'yyyy-mm-dd hh24:mi:ss'可以自己定义
sql='select * from table1 where upd_date >=to_date('''
|| id_date || ''',''yyyy-mm-dd hh24:mi:ss'');
open mycursor for sql;
--异常处理需要语句。
execption
when others then
raise;
end a;
sql varchar(200);