在网上找了两天了,也没找类似下面问题的解决方法。急!急!急!急!
前提:B/S构架。用户登录时打开以下的M_USR表进行password等验证,验证通过后将M01_USR_ID存入asp.net session中表 M_USR
CREATE TABLE M_USR
(
    M01_USR_ID                        CHAR(5) NOT NULL,
    M01_USR_PWD                    CHAR(6) NOT NULL,
    M01_USR_NAME                   CHAR(20),
    ......
    INSERT_DATE                      DATE,
    INSERT_USR_ID                   CHAR(5),
    UPDATE_DATE                    DATE,
    UPDATE_USR_ID                 CHAR(5),
    DELETE_FLAG                     CHAR(1),
    CONSTRAINT PK_M_USR PRIMARY KEY (M01_USR_ID)
)
/另有若干个表 TABLE_1 ---- TABLE_n,每个表都包含上述M_USR表中的INSERT_DATE , INSERT_USR_ID,UPDATE_DAT,
UPDATE_USR_ID, DELETE_FLAG 5个共通字段。若M_USR或TABLE_1 ---- TABLE_n中任意一个表进行INSERT或UPDATE操作时,要求在SQL语句中不包含上述5个共通字段的相关操作,该5个共通字段均自动进行相应的INSERT或UPDATE操作,其中INSERT_USR_ID和UPDATE_USR_ID字段的取值为已经存入asp.net session中M01_USR_ID的值;INSERT_DATE和UPDATE_DATE取SYSDATE。以上问题尽可能通过存储过程与触发器解决,尽量减少程序代码的编写。
请给出相关代码,不胜感激!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    存储过程的例子
    见:http://hi.baidu.com/zhao_e893/blog/item/5c7097356a9d8f1190ef3937.html
      

  2.   

    问题已解决!大家共同分享1.建立触发器
    CREATE OR REPLACE TRIGGER TRG_M_MEAL_STND
    BEFORE INSERT OR UPDATE 
    ON M_MEAL_STND
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW 
    DECLAREBEGIN
    --/INSERT操作 ***************************************************
    IF INSERTING THEN
    --/* 共通项目设定 */
    PRC_COM_INS_SET(:new.TRK_USR_ID,
                                    :new.TRK_DTE,
                                    :new.KOS_USR_ID,
                                    :new.KOS_DTE,
                                    :new.DELETE_FLG);
    END IF; --/***** UPDATE操作 ***************************************************
    IF UPDATING THEN
    --/* 共通项目设定 */
    PRC_COM_UPD_SET(:new.KOS_USR_ID,
                                    :new.KOS_DTE);
    END IF;END TRG_M_MEAL_STND;
    /
    2.建立存储过程
    CREATE OR REPLACE PROCEDURE PRC_COM_INS_SET (
    p_insert_user OUT VARCHAR2,  --/* 登录用户*/
            p_insert_date   OUT     DATE,
            p_update_user   OUT     VARCHAR2,
            p_update_date   OUT     DATE,
            p_delete_flag   OUT     CHAR
    ) AS
    BEGIN
        --/* 登录用户信息取得 */
        PRC_COM_SESINFO_GET(p_insert_user);    p_insert_date := SYSDATE;
        p_update_user := 'NONE';
        p_update_date := NULL;
        p_delete_flag :='0';END PRC_COM_INS_SET;
    /
    3.建立存储过程
    CREATE OR REPLACE PROCEDURE PRC_COM_UPD_SET (
    p_update_user OUT VARCHAR2,  --/* 登录用户*/
            p_udate_date    OUT     DATE
    ) AS
    BEGIN
        --/* 登录用户信息取得 */
        PRC_COM_SESINFO_GET(p_update_user);
        p_udate_date :=SYSDATE;
    END PRC_COM_UPD_SET;
    /4.建立存储过程
    CREATE OR REPLACE PROCEDURE PRC_COM_SESINFO_GET (
        p_ptruser        OUT      VARCHAR2   --  登录用户
    ) AS
        p_insert_user             VARCHAR2(64);  --  ACTION
    BEGIN
        --  SESSION信息取得 
        SELECT
            ACTION
        INTO
            p_insert_user
        FROM
            V$SESSION
        WHERE
            AUDSID     =  USERENV('SESSIONID');
        --  取得返回值
        p_ptruser     :=  p_insert_user;
        IF (p_ptruser IS  NULL) THEN
            p_ptruser := 'NONE';
        END IF;
    END PRC_COM_SESINFO_GET;
    /5.
    进行DB INSERT或UPDATE操作前由WEB SERVER向 ORACLE SERVER发送
    begin
         DBMS_APPLICATION_INFO.SET_MODULE(:MODULE,:ACTION);
    end;
    将用户信息存入ORACLE SESSION.