2011-07-28 31 views
1

插入时间戳我有这个程序希望通过程序在Oracle

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,并在其中添加当天的时间戳..豪我可以做,在此过程中。 。谢谢

回答

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

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

0

SYSDATE会给你当前的数据和时间。

,如果你有一个默认值添加列,你可以留下你的程序,因为它是

ALTER TABLE table1 ADD when_created DATE DEFAULT SYSDATE;