oracle存储过程报错:文字与文本字符串不匹配

今天写了一个有关存储过程的代码段,但是出师不利第一个存储就开始报错(以下为本人在实验过程中所遇到的错误,如有不妥之处,望指正)

题目要求:

  1. 借书时要求输入借阅流水号,借书证号,图书编号。(即该存储过程有3个输入参数)
  2. 借书时,借书日期为系统时间。
  3. 图书的是否借出改为‘是’

报错代码:

create or replace procedure p_借书(
p_借阅流水号 in Leadinformation.Leadid%TYPE,
p_借书证号 in Leadinformation.Readerid%TYPE,
p_图书编号 in Leadinformation.Bookid%TYPE
)
as
Begin
  insert into Leadinformation
         values(p_借阅流水号,p_借书证号,p_图书编号,to_date(SYSDATE,'yyyy/mm/dd'),'','','');
  update Book set Book.Isout='是' where Book.Bookid=p_图书编号;
  dbms_output.put_line('操作成功');
  commit;
  return;
END;
 

错误原因:因为在数据表中日期的存储类型为date,首先想的是转换为日期类型,但是没有想到的是SYSDATE就已经是DATE类型,所以这里不再使用to_date进行转换。另外,转换SYSDATE也只能使用to_char来转换为char型,也尝试过先将其转换为char在转换为date型,但在实验过程中也会报错,因此在日期类型这里直接使用SYSDATE。

如果有报这种错误的,可以看看参数中是否含有日期类型的数据。

更改后代码:

create or replace procedure p_借书(
p_借阅流水号 in Leadinformation.Leadid%TYPE,
p_借书证号 in Leadinformation.Readerid%TYPE,
p_图书编号 in Leadinformation.Bookid%TYPE
)
as
Begin
  insert into Leadinformation
         values(p_借阅流水号,p_借书证号,p_图书编号,SYSDATE,'','','');
  update Book set Book.Isout='是' where Book.Bookid=p_图书编号;
  dbms_output.put_line('操作成功');
  commit;
  return;
END;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值