在网上找了两天了,也没找类似下面问题的解决方法。急!急!急!急!
前提: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。以上问题尽可能通过存储过程与触发器解决,尽量减少程序代码的编写。
请给出相关代码,不胜感激!!!!!!!!!!!!!!!!!!!
前提: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。以上问题尽可能通过存储过程与触发器解决,尽量减少程序代码的编写。
请给出相关代码,不胜感激!!!!!!!!!!!!!!!!!!!
见:http://hi.baidu.com/zhao_e893/blog/item/5c7097356a9d8f1190ef3937.html
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.