大家看看我这个存储过程有什么问题

logzgh 2003-08-21 09:28:18
create or replace procedure ETIME.UpdateEmployeeLogin (
iv_employeeid in number,
iv_LoginDate in date
)
AS
begin
update etime.employee
set LastLoginTime = iv_LoginDate
where employeeid = iv_employeeid;
commit;
end;
创建是没什么问题的。但是我该怎么样把日期传进去呢?或者说我这个存储过程
应该怎么改呢?是不是不能传date格式,一定要用to_date呢?

//bow~~~

...全文
33 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
logzgh 2003-08-21
  • 打赏
  • 举报
回复
哦。谢谢 armu80830(此情可待)

如果我的出错处理这样写:
update etime.employee
set LastLoginTime = iv_LoginDate
where employeeid = iv_employeeid;
commit;

if SQLCODE != 0 then
raise_application_error (-20005,'删除出错!请仔细检查然后重试!');
end if;
行不行?我没有加exception.
logzgh 2003-08-21
  • 打赏
  • 举报
回复
我前端日期格式是 yyyy-mon-dd

怎么转换呢? oracle里面好像年在后面呀

刚接触oracle。。。
armu80830 2003-08-21
  • 打赏
  • 举报
回复
传入字符串,再转换也可以,如下:
(传入iv_LoginDate时用字符串,如:"2003-01-23")

create or replace procedure ETIME.UpdateEmployeeLogin (
iv_employeeid in number,
iv_LoginDate in varchar2
)
AS
begin
update etime.employee
set LastLoginTime = to_date(iv_LoginDate,'YYYY-MM-DD')
where employeeid = iv_employeeid;
commit;
end;
hepp 2003-08-21
  • 打赏
  • 举报
回复
我通常都是传入字符串然后to_date成日期,或者把字符串to_date成日期然后传入。
如果前台调用,那要确定前台开发工具的日期转换
dihai2000 2003-08-21
  • 打赏
  • 举报
回复
用to_date 或是to_char
beckhambobo 2003-08-21
  • 打赏
  • 举报
回复
判断是否更新错语,可以这样的
exception
when others then
....
tiangou 2003-08-21
  • 打赏
  • 举报
回复
对于yyyy-mon-dd格式,我刚才在8i中测试过,供参考

===========================================================

SQL> select to_date('2003-08-01','yyyy-mon-dd') from dual;

select to_date('2003-08-01','yyyy-mon-dd') from dual

ORA-01843: 无效的月份

SQL> select to_date('2003-8-01','yyyy-mon-dd') from dual;

select to_date('2003-8-01','yyyy-mon-dd') from dual

ORA-01843: 无效的月份

SQL> select to_date('2003-Aug-01','yyyy-mon-dd') from dual;

select to_date('2003-Aug-01','yyyy-mon-dd') from dual

ORA-01843: 无效的月份

SQL> select to_date('2003-8月-01','yyyy-mon-dd') from dual;

TO_DATE('2003-8月-01','YYYY-MO
------------------------------
2003-8-1

SQL>
logzgh 2003-08-21
  • 打赏
  • 举报
回复
对了,beckhambobo(beckham),你的方法不能满足我的要求。
我的目的是想判断上面那个sql语名是否成功执行。而不是是否找到数据。

exception
when others then
....
不知行不行?
logzgh 2003-08-21
  • 打赏
  • 举报
回复
谢谢。。。。

但是我那种方法可不可以呢?

其实我那种方法的思路是来源于sql server,只需直接判断SQLCODE的取值...如果可以的话,

那么在好多情况下都可以使用。
beckhambobo 2003-08-21
  • 打赏
  • 举报
回复
create or replace procedure ETIME.UpdateEmployeeLogin (
iv_employeeid in number,
iv_LoginDate in varchar2
)
AS
begin
update etime.employee
set LastLoginTime = to_date(iv_LoginDate,'YYYY-MM-DD')
where employeeid = iv_employeeid;
commit;
if sql%notfound then
dbms_output.put_line('没有记录被修改');
end if;
end;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧