Oracle 存储过程中使用date 时、分、秒丢失

WBOY
发布: 2016-06-07 16:43:24
原创
1275 人浏览过

今天有一开发兄弟找我,说Oracle 出现一奇怪现象,在存储过程中赋date类型的值,时、分、秒都丢失了,下面来做个试验:

今天有一开发兄弟找我,说Oracle 出现一奇怪现象,在存储过程中赋date类型的值,时、分、秒都丢失了,下面来做个试验:
 
SQL> drop table test purge;
 SQL> create table test
    (
      fill_date  date
    );
 SQL> insert into test values(sysdate);
 SQL> commit;
 SQL> select to_char(fill_date,'yyyy-MM-dd HH24:mi:ss') from test;
 TO_CHAR(FILL_DATE,'
 -------------------
 
2014-07-18 17:47:22
 
SQL> CREATE OR REPLACE PROCEDURE test_p
 is
 s_sql varchar2(500);
 s_date date;
 begin
 s_date:= to_date('2014-07-18 17:24:32','yyyy-MM-dd HH24:mi:ss');
 s_sql := 'UPDATE test SET fill_date = '''||s_date ||'''';
 execute immediate s_sql;
 commit;
 end;
 

/
 
SQL> call test_p();
 

SQL> select to_char(fill_date,'yyyy-MM-dd HH24:mi:ss') from test;
 TO_CHAR(FILL_DATE,'
 -------------------
 2014-07-18 00:00:00    --可以看到确实时、分、秒已经丢失,怀疑是隐式转换导致
 

--调整下存储过程,,看打印出什么来。
 


SQL> CREATE OR REPLACE PROCEDURE test_p
 is
 s_sql varchar2(500);
 s_date date;
 begin
 s_date:= to_date('2014-07-18 17:24:32','yyyy-MM-dd HH24:mi:ss');
 s_sql := 'UPDATE test SET fill_date = '''||s_date ||'''';
 dbms_output.put_line(s_sql);
 execute immediate s_sql;
 commit;
 end;
 

/
 


SQL> set serveroutput on
 

SQL> call test_p();
 UPDATE test SET fill_date = '18-7月 -14'
 调用完成。
 
--确认发生了隐式转换,那就使用绑定变量了
 
SQL> CREATE OR REPLACE PROCEDURE test_p
 is
 s_sql varchar2(500);
 s_date date;
 begin
 s_date:= to_date('2014-07-18 17:24:32','yyyy-MM-dd HH24:mi:ss');
 s_sql := 'UPDATE test SET fill_date = :1';
 execute immediate s_sql using s_date;
 commit;
 end;
 

/
 
SQL> call test_p();
 调用完成。
 

SQL> select to_char(fill_date,'yyyy-MM-dd HH24:mi:ss') from test;
 TO_CHAR(FILL_DATE,'
 -------------------
 2014-07-18 17:24:32

Java中用JDBC调用Oracle存储过程和函数

Oracle存储过程本地编译方式

Oracle 存储过程及REF CURSOR的使用

Oracle存储过程中提示“权限不足”的解决办法

Oracle利用存储过程返回结果集开发报表

Oracle存储过程中临时表的使用技巧

本文永久更新链接地址:

linux

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!