Хотите вставить метку времени через процедуру в оракуле - PullRequest
1 голос
/ 28 июля 2011

У меня есть эта процедура

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;

Я хочу добавить 4-й столбец в таблице1, например, day_time, и добавить в него метку времени текущего дня. Как я могу сделать это в этой процедуре ... спасибо

Ответы [ 3 ]

2 голосов
/ 28 июля 2011

Предполагая, что у вас есть (или добавлен) столбец таблицы вне процедуры, т. Е.

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);

В целом, однако, я настоятельно рекомендую вам не возвращать коды ошибок и сообщения об ошибках из процедур.Если вы не можете обработать ошибку в своей процедуре, вы должны разрешить распространению исключения до вызывающей стороны.Это гораздо более устойчивый метод написания кода, чем попытка убедиться, что каждый вызывающий в каждой процедуре всегда правильно проверяет код возврата.

0 голосов
/ 28 июля 2011

Использование Sysdate может обеспечить все виды манипуляций, включая текущую или будущие и прошлые даты.

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

0 голосов
/ 28 июля 2011

SYSDATE предоставит вам текущие данные и время.

, и если вы добавите столбец со значением по умолчанию, вы можете оставить свою процедуру такой же, как

ALTER TABLE table1 ADD when_created DATE DEFAULT SYSDATE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...