今天有一开发兄弟找我。说出现一奇怪现象,在存储过程中赋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

oracle 存储过程中使用date 时、分、秒丢失的更多相关文章

  1. Oracle存储过程中异步调用的实际操作步骤

    本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑 ...

  2. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  3. 在ORACLE存储过程中创建临时表

    在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...

  4. JS实现倒计时(天数,时,分,秒)

    <!DOCTYPE html> <html> <head>   <meta charset="utf-8" >   <titl ...

  5. ORACLE存储过程中%TYPE和%ROWTYPE的区别

    ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个 ...

  6. Oracle存储过程中跳出循环的写法

    注:本文来源于: <  Oracle存储过程中跳出循环的写法   > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...

  7. java 实现往oracle存储过程中传递array数组类型的参数

    注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...

  8. oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题

    oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题 学习了:http://blog.csdn.net/royzhang7/article/deta ...

  9. oracle存储过程中%type的含义

    转: oracle存储过程中%type的含义 2018-11-07 11:43:56 lizhi_ma 阅读数 1361更多 分类专栏: 数据库   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

随机推荐

  1. 【ACM】最小公倍数

    http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=1&problemid=1 #inclu ...

  2. SurfaceView绘制录音波形图

    本文简单记录由View绘制转为SurfaceView绘制的波形图问题. 上代码: public class VoiceLineView extends View { private final int ...

  3. 初识 Swift编程语言(中文版)

    前言 今天Apple公布了新的编程语言Swift.也提供了一本将近400页的 The Swift Programming Language(Swift编程语言). 尽管我没有开发人员账号.没法实际上机 ...

  4. Unity3D实现3D立体游戏原理及过程,需偏振眼镜3D显

    http://tieba.baidu.com/p/3038509618?fr=ala0&pstaala=3

  5. python安装libxml2和pyquery

    安装.net framework 4.5.2 https://www.microsoft.com/zh-CN/download/details.aspx?id=42641 安装C编译器 python2 ...

  6. 读-《c++设计新思维-泛型编程与设计模式之应用》经典记录(英文书名:《modern c++ design》)

    1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done ...

  7. IOS Exception 1(libc++abi.dylib: terminating with uncaught exception of type NSException)

    2014-08-05 22:18:46.455 SwiftUI[1329:40871] -[_TtC7SwiftUI14MViewControler clickMe]: unrecognized se ...

  8. js操作当前窗口

      CreateTime--2017年7月21日09:58:34Author:Marydon js操作当前窗口 1.打开一个新的窗口(新的标签页) 实现方式:window.open(url) 实例一: ...

  9. struts2 ValueStack的作用

    Value Stack的作用: 1.       可以作为一个数据中转站 2.       用于在前台-后台之间传递数据,最典型的做法就是struts2标签也ognl表达式的结合.我用得最多的就是数据 ...

  10. SecureCRT 默认配置

    1.配置默认设置