[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
MERGE INTO USER_MASTER USING USER_MASTER_IMPORT ON ( USER_MASTER.USER_ID = USER_MASTER_IMPORT.USER_ID) -- 既存レコードの更新 WHEN MATCHED THEN UPDATE SET USER_NAME = USER_MASTER_IMPORT.USER_NAME, DEPT_NO = USER_MASTER_IMPORT.DEPT_NO, MODIFIED_ON = SYSDATE -- 新規レコードの作成 WHEN NOT MATCHED THEN INSERT ( USER_ID, USER_NAME, DEPT_NO ) VALUES ( USER_MASTER_IMPORT.USER_ID, USER_MASTER_IMPORT.USER_NAME || '(新人)', USER_MASTER_IMPORT.DEPT_NO )
time=(logoutdt-logindt)*24*60*60
select (:time - mod(:time,3600))/3600 ||'時間'||(mod(:time,3600) - mod(mod(:time,3600),60))/60 ||'分'||mod(mod(:time,3600),60)||'秒' from dual;
dy = 月曜日の場合は 月
day = 月曜日の場合は 月曜日
以下、例
CREATE OR REPLACE TRIGGER TEST_LOGON_CHK AFTER LOGON ON database
DECLARE
w_PROGRAM VARCHAR2(64);
w_user VARCHAR2(30);
w_hostname VARCHAR2(16);
CURSOR c1 IS
SELECT username, PROGRAM, terminal
FROM v$session WHERE audsid = userenv('sessionid');
BEGIN
OPEN c1;
FETCH c1 INTO w_user, w_PROGRAM, w_hostname;
if (w_user = 'CAD_USER' or w_user = 'TEST_USER')
and w_PROGRAM='sqlplus.exe'
and w_hostname like 'NEWS%'
then
RAISE_APPLICATION_ERROR(-20001, 'You are not allowed to log into database.');
end if;
CLOSE c1;
END;
/
あるテーブルB にあり テーブルA にないレコードをインポートする方法
OracleではMergeがあるが、取り込むカラムがキーの場合使用出来ない。
よって、以下の方法で行う。
USH_PJTNO がテーブルBのキー及び取り込みたいカラム
CODE がUSH_PJTNOを取り込み先
案1
INSERT INTO テーブルB(USH_PJTNO)
SELECT CODE
FROM テーブルA
WHERE WSNO=0 AND TERM_END='4712/12/31' AND CODE LIKE 'PJT%'
MINUS
SELECT USH_PJTNO
FROM A_WBSPRJ_UNIT
案2
INSERT INTO テーブルB(USH_PJTNO)
SELECT A.CODE FROM テーブルA A
WHERE NOT EXISTS (
SELECT B.USH_PJTNO FROM テーブルB B
WHERE A.CODE = B.USH_PJTNO
) AND A.WSNO=0 AND A.TERM_END='4712/12/31' AND CODE LIKE 'PJT%'
******MERGE*(参考 以下の場合、USH_PJTNOがキーの場合エラーになる)********
MERGE INTO テーブルB T
USING テーブルA F
ON ( T.USH_PJTNO = F.CODE AND F.WSNO=0)
WHEN MATCHED THEN
UPDATE SET
T.USH_PJTNO = F.CODE,
WHEN NOT MATCHED THEN
INSERT (
USH_PJTNO
)
VALUES (
F.CODE
)