我有这个程序
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,并在其中添加当前日期时间戳。我可以在此过程中执行此操作..谢谢
答案 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