首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle 11g存储过程中时间戳(9)的舍入

Oracle 11g存储过程中时间戳(9)的舍入
EN

Stack Overflow用户
提问于 2011-01-22 06:07:25
回答 3查看 2K关注 0票数 2

以下过程将时间戳(9)舍入为时间戳(6):

代码语言:javascript
运行
复制
CREATE
    TABLE MY_TABLE
    (
        MY_TIMESTAMP TIMESTAMP(9) NOT NULL
    )

CREATE OR REPLACE PROCEDURE "DB"."INSERT_ROW"
(myTimestamp IN TIMESTAMP)
AS
v_sys_error NUMBER := 0;
v_err INTEGER;
v_rc INTEGER;
BEGIN

BEGIN
    INSERT
INTO
    DB.INSERT_ROW
    (
        MY_TIMESTAMP
    )
    VALUES
    (
        myTimestamp
    );
EXCEPTION
WHEN OTHERS THEN
v_sys_error := SQLCODE;
v_err := v_sys_error;
v_rc := SQL%ROWCOUNT;
RAISE;
END;

END;

下面的调用将插入: 2007-12-12 12:23:45.123457000

代码语言:javascript
运行
复制
@call DB.INSERT_ROW(TIMESTAMP '2007-12-12 12:23:45.123456789');

而下面的代码将插入这个: 2007-12-12 12:23:45.123456789

代码语言:javascript
运行
复制
INSERT
INTO
    DB.MY_TABLE
    (
        MY_TIMESTAMP
    )
    VALUES
    (
        TIMESTAMP '2007-12-12 12:23:45.123456789'
    );

我如何防止这种情况发生?使用(myTimestamp IN TIMESTAMP(9))验证失败。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-22 17:22:41

代码语言:javascript
运行
复制
CREATE
    TABLE MY_TABLE
    (
        MY_TIMESTAMP TIMESTAMP(9) NOT NULL
    )

CREATE OR REPLACE PROCEDURE "DB"."INSERT_ROW"
(myTimestamp IN MY_TABLE.MY_TIMESTAMP%TYPE)
...

这应该能起到作用。参数列表中不允许使用数字约束类型。

票数 1
EN

Stack Overflow用户

发布于 2011-01-22 06:12:54

解决精度问题的一种方法是转换它(与‘’连接),或者在调用PROC时使用带有格式的to_char。

将输入作为VARCHAR2?

转换可以在proc内的INSERT中进行,转换为时间戳(9)

编辑:显然我假设你的表字段是正确的时间戳(9),但也要检查一下。

票数 1
EN

Stack Overflow用户

发布于 2014-04-15 19:53:32

您还可以使用timestamp_unconstrained类型:

代码语言:javascript
运行
复制
create or replace procedure insert_row ( myTimestamp timestamp_unconstrained )
is
begin
  insert into my_table ( my_timestamp ) values ( myTimestamp );
end insert_row;
/

检查http://docs.oracle.com/cd/E18283_01/appdev.112/e17126/predefined.htm

代码语言:javascript
运行
复制
subtype TIMESTAMP_UNCONSTRAINED     is TIMESTAMP(9);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4764314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档