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 ...
随机推荐
- xUtils怎样通过注解对FindViewById进行封装
之前讲到了介绍了一下xUtils的基本用法,今天我们就来具体介绍一下关于xUtils中的ViewUtils模块. 在ViewUtils模块中我们首先看到的是它採用了一种注解的方式进行声明,那么我们首先 ...
- Swing的GUI组件得到焦点
Swing的GUI组件如JButtin,JTextArea,JRadioButton,JComboBox等,可以使用requestFocus()方法来获得焦点.
- 云计算之路-试用Azure:如何建立虚拟机之间的内网连接
在阿里云上,同一个帐户创建的所有虚拟机(云服务器)之间的内网是直接连通的.而Azure则完全不一样,一开始使用时有点不知所措,后来摸索出来了——在Azure中只有处于同一个虚拟网络(Virtual N ...
- vue - check-versions.js for child_process
webpack之类的配置文件. webpack.base.conf.js
- 微信小程序innerAudioContext接口
voice:function(){ var word = this.data.word; var src = 'https://--/'+word['word']+'.mp3'; console.lo ...
- js 创建数组方法以及区别
示例代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...
- ES6 Promise catch
getJSON方法返回一个 Promise 对象,如果该对象状态变为resolved,则会调用then方法指定的回调函数:如果异步操作抛出错误,状态就会变为rejected,就会调用catch方法指定 ...
- Redis源代码解析:13Redis中的事件驱动机制
Redis中.处理网络IO时,採用的是事件驱动机制.但它没有使用libevent或者libev这种库,而是自己实现了一个很easy明了的事件驱动库ae_event,主要代码只400行左右. 没有选择l ...
- Unity Inspector 给组件自动关联引用(二)
通过声明的变量名称,主动关联引用. 使用这个关联引用两种方式1. 给你组件继承 MonoAutoQuote 点击组件inspector 按钮执行2. 给你组件类添加[AAutoQuote] 特性 ...
- mongodb安装的两条命令
1. 安装 下载并安装,注意安装方式为custom,路径自定义(d:\chengxu\mongodb),安装成功后在mongodb文件夹下新建data文件夹(内新建db文件夹)和logs文件夹(内新建 ...