今天有一开发兄弟找我。说出现一奇怪现象,在存储过程中赋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. log4j实现每一个线程保存一个日志文件

    log4j.properties: ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.Conso ...

  2. 在表单里面检查用户名是否存javascript

    function CheckUser(fn) { $.get("/Pages/Handler/CheckExistHander.ashx", { "txt_UserNo& ...

  3. ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误

    ios 程序发布使用xcode工具Application Loader 正在通过ITUNES STORE进行鉴定错误 一:此错误会导致上传程序,一直停留在验证阶段,而没有一点上传进度:结果会苦等半天, ...

  4. 通过LR监控Linux服务器性能

    1)设置监控服务器要监控 UNIX 资源,必须配置 rstatd 守护程序.注意,可能已经配置了 rstatd守护程序,因为当计算机收到一个 rstatd 请求时,该计算机上的 inetd 自动激活r ...

  5. Java基础——线程总结

    Java基础--线程总结 一.线程是什么? 线程:一个程序里不同的运行路径. 二.怎样创建线程? 两种方法创建线程: 第一种 (1)定义详细功能类实现Runnable接口,能够多次调用而实现数据共享 ...

  6. maven modules

    所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一 ...

  7. java数据库操作:JDBC的操作

    1,JDBC注意操作类及接口: 数据库操作过程: 1)打开数据库服务 2)连接数据库:一般都要输入用户名,密码, 3)操作数据库:创建表:查询表,更新,记录. 4)关闭数据库. 1,DriverMan ...

  8. Linux-Nginx-关闭进程

    当然就仅仅是介绍一条命令了,就这么简单. nginx默认创建一个工作进程 root 2713 1 0 07:56 ? 00:00:00 nginx: master process ../sbin/ng ...

  9. Java 连接 Oracle 数据库

    首先要导入ojdbc6.jar 包(放在lib文件夹) 然后需要在数据库建一个student表进行测试: 连接及测试代码: import java.security.interfaces.RSAKey ...

  10. linuxubuntu升级.net core版本到2.0

    直接看这里 https://www.microsoft.com/net/core#linuxubuntu