oracle 存储过程中使用date 时、分、秒丢失
今天有一开发兄弟找我。说出现一奇怪现象,在存储过程中赋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 时、分、秒丢失的更多相关文章
- Oracle存储过程中异步调用的实际操作步骤
本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用 .而有些相关的业务逻辑 ...
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
- 在ORACLE存储过程中创建临时表
在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...
- JS实现倒计时(天数,时,分,秒)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" > <titl ...
- ORACLE存储过程中%TYPE和%ROWTYPE的区别
ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个 ...
- Oracle存储过程中跳出循环的写法
注:本文来源于: < Oracle存储过程中跳出循环的写法 > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...
- java 实现往oracle存储过程中传递array数组类型的参数
注:本文来源于 < java 实现往oracle存储过程中传递array数组类型的参数 >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...
- oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题
oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题 学习了:http://blog.csdn.net/royzhang7/article/deta ...
- oracle存储过程中%type的含义
转: oracle存储过程中%type的含义 2018-11-07 11:43:56 lizhi_ma 阅读数 1361更多 分类专栏: 数据库 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
随机推荐
- 003java面试笔记——【java基础篇】从团八百失败面试总结的java面试题(未完待续)
8.java 线程 1)线程概念,线程与进程 线程:线程是“进程”中某个单一顺序的控制流.也被称为轻量进程.线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程.线 ...
- About stats collected
pg_class.relpages pg_class.reltuples仅仅是近似值,和实际数据会有点误差: 新建空表.首次insert对自己主动收集和更新统计信息,影响的表pg_class\pg_s ...
- [Angular] Two things about OnChanges Lifecycle hook
1. ngOnChanges is called before ngOnInit but after constructor() 2. ngOnChanges is called because of ...
- nginx安装说明
下载地址:http://nginx.org/en/download.html 安装版本:1.10.0 安装配置如下: /etc/nginx 目录 /home/nginx目录 --prefix=/hom ...
- centos下安装pyspider
环境: * CentOS release 6.4 (Final) * Python 2.6.6 pip install pyspider ,发现lxml没有安装好 直接sudo yum insta ...
- Flutter网络请求与JSON解析
本文介绍如何在Flutter中创建HTTP网络请求和对请求的json string进行类型解析. 网络请求 官方使用的是用dart io中的HttpClient发起的请求,但HttpClient本身功 ...
- unity3d中布娃娃系统
原地址:http://blog.csdn.net/pizi0475/article/details/9771941 转自: http://forum.mirax.com.tw/unity/viewto ...
- 使用VisualSVN建立SVN服务器
原地址:http://blog.csdn.net/happyjiang2009/article/details/5719988 以前使用官方Subversion搭建SVN版本控制环境,感觉很繁琐,需要 ...
- Python的多进程编程
Python在2.6引入了多进程的机制,并提供了丰富的组件及api以方便编写并发应用.multiprocessing包的组件Process, Queue, Pipe, Lock等组件提供了与多线程类似 ...
- 《Java并发编程的艺术》读书笔记:等待/通知机制
看这本书之前,对wait和notify认识大概就是,调用wait的线程A堵塞之后,一旦另外有线程调用notify方法.线程A会立马从wait方法处返回.看完这本书后.发现自己的认识实在太肤浅了.... ...