想在oracle中通过程序插入时间戳

时间:2011-07-28 19:25:11

标签: sql oracle time

我有这个程序

PROCEDURE insertSample
  (
    return_code_out OUT VARCHAR2,
    return_msg_out OUT VARCHAR2,
    sample_id_in IN table1.sample_id%TYPE,
    name_in IN table1.name%TYPE,
    address_in IN table1.address%TYPE
  )
  IS

  BEGIN
    return_code_out := '0000';
    return_msg_out := 'OK';

    INSERT INTO table1
    sample_id, name, address)
    VALUES
    (sample_id_in, name_in, address_in);


  EXCEPTION
    WHEN OTHERS
    THEN
      return_code_out := SQLCODE;
      return_msg_out := SQLERRM;


  END insertSample;

我想在table1中添加第4列,例如day_time,并在其中添加当前日期时间戳。我可以在此过程中执行此操作..谢谢

3 个答案:

答案 0 :(得分:2)

假设您在程序之外的表中有(或添加)一列,即

ALTER TABLE table1
  ADD( insert_timestamp TIMESTAMP );

您可以将INSERT声明修改为

   INSERT INTO table1
    sample_id, name, address, insert_timestamp)
    VALUES
    (sample_id_in, name_in, address_in, systimestamp);

但是,一般情况下,我强烈建议您不要从过程返回错误代码和错误消息。如果无法处理过程中的错误,则应将异常传播给调用者。这是一种更可持续的编写代码的方法,而不是试图确保每个过程的每个调用者始终正确地检查返回代码。

答案 1 :(得分:0)

SYSDATE会为您提供当前的数据和时间。

如果您使用默认值添加列,则可以保留您的过程

ALTER TABLE table1 ADD when_created DATE DEFAULT SYSDATE;

答案 2 :(得分:0)

使用Sysdate可以提供各种操作,包括当前日期,或者将来和过去的日期。

http://edwardawebb.com/database-tips/sysdate-determine-start-previous-month-year-oracle-sql