for i in (select * from order_dtls order by 1 asc) loop
select b.dealer_id
into n_dealer
from booking_mst b
where b.booking_id = i.booking_id;
dbms_output.put_line(n_cnt ||'--'|| to_char(sysdate,'yyyymmdd') ||'--'|| chr(1) || '43' ||'--'||
chr(1) || n_dealer ||'--'|| '1525' ||'--'|| '0' ||'--'|| i.amount ||'--'||
chr(1) || i.product_id ||'--'|| chr(1) || i.quantity ||'--'||
chr(1) || to_char(i.order_date,'yyyymmdd') + 1 ||'--'|| chr(1) ||
to_char(i.order_date,'yyyymmdd'));
commit;
n_cnt := n_cnt + 1;
end loop;
答案 0 :(得分:1)
问题在于:
. . . || to_char(i.order_date,'yyyymmdd') + 1 ||
目前被视为:
(. . . || to_char(i.order_date,'yyyymmdd')) + 1 ||
上面的隐式数字转换失败,因而错误。
将加法to_char(i.order_date,'yyyymmdd') + 1
括在括号内:
dbms_output.put_line(n_cnt ||'--'|| to_char(sysdate,'yyyymmdd') ||'--'|| chr(1) || '43' ||'--'||
chr(1) || n_dealer ||'--'|| '1525' ||'--'|| '0' ||'--'|| i.amount ||'--'||
chr(1) || i.product_id ||'--'|| chr(1) || i.quantity ||'--'||
chr(1) || (to_char(i.order_date,'yyyymmdd') + 1) ||'--'|| chr(1) ||
to_char(i.order_date,'yyyymmdd'));
正如Wernfried所说,您的代码中还有另一个问题。您应该在日期中添加1,而不是结果字符串。
所以正确的代码是:
括号内:
dbms_output.put_line(n_cnt ||'--'|| to_char(sysdate,'yyyymmdd') ||'--'|| chr(1) || '43' ||'--'||
chr(1) || n_dealer ||'--'|| '1525' ||'--'|| '0' ||'--'|| i.amount ||'--'||
chr(1) || i.product_id ||'--'|| chr(1) || i.quantity ||'--'||
chr(1) || to_char(i.order_date + 1,'yyyymmdd') ||'--'|| chr(1) ||
to_char(i.order_date,'yyyymmdd'));