出來混總是會碰到的~其實我對甲骨文的印象很不好~又肥又胖又貴...
(快十年前,硬碟還很小,RAM 2G就很強大的時後,oracle一裝就馬上讓電腦慢到爆!)
(然後買了Java...又把人家搞爛)
不過還是又看到他了一.一|||...
是說用的方法網路資源很多,就當個記錄就是~
好吧Orz...先說一下工具的部份。
工具大家似乎都是使用 PL/SQL Developer。不過他要吃 oracle 的 ora 檔,還得要先裝一個oracle client(還好有人有現成的copy來用就沒差)...
目前 oracle 官網放的是叫 SQL Developer,老實說,難用到不知道要怎麼用,然後他連接的方式並不會產生ora檔~所以...就直接放棄他了一.一...
另外我平常使用的是小松鼠squirrel-sql,是一個用純 jdbc 實作出來的opensource...當然是很陽春,不過輕量簡單~若只是做查詢的簡單工作,又不想裝太多是個選擇。不過他抓不到 schema內的 REMARK(註解),在看會很不方便。
最後~我是用 PLSQL Developer 啦,因為要做點管理的工作Orz...
另外他對 function 等的編輯畫面好很多~
建立table~可以透過介面新增。工具好的話都不會有啥問題~
(工具 用介面建,之後匯出SQL給上線的server用就好)
就是建好要 grant 給其他 user 使用。
grant select, insert, update, delete on XXX_table to ZZZ_user;
因為有用到 synonym 的部份,要把有 owner(schema) 的轉成 public 也可以讀到~
create or replace public synonym XXX_table for YY_owner.XXX_table;
另有做Trigger Log table的方式是~
先建一個 要 trigger 的 table,一般是 XXX_table_LOG,做好跟開 table 一樣的事。
寫 trigger,可以參照
https://docs.oracle.com/cd/E17952_01/refman-5.1-en/create-tablespace.html
因為有前人的照抄,搞懂語法後是還蠻容易的就是~
唯一要注意的就是,因為我這邊用的統一都是在 BEFORE 之前Trigger,在 insert 時要寫入LOG時,因為有些欄位是有帶預設值的,所以要記得用NVL判斷一下,已免應該有值,但寫了null~
CREATE OR REPLACE TRIGGER TG_XXX_table_LOG
BEFORE INSERT OR DELETE OR UPDATE
on YY_owner.XXX_table
REFERENCING NEW AS NEW OLD AS OLD
for each row
declare
-- local variables here
begin
IF updating THEN
INSERT INTO YY_owner.XXX_table_LOG
(Col_A,
Col_B,
LOG_DATE,
LOG_ACTION)
VALUES
(:NEW.Col_A,
:NEW.Col_B,
SYSDATE,
'U');
ELSIF inserting THEN
INSERT INTO YY_owner.XXX_table_LOG
(Col_A,
Col_B,
LOG_DATE,
LOG_ACTION)
VALUES
(:NEW.Col_A,
NVL(:NEW.Col_B,'Y'),
SYSDATE,
'I');
ELSE
INSERT INTO YY_owner.XXX_table_LOG
(Col_A,
Col_B,
LOG_DATE,
LOG_ACTION)
VALUES
(:OLD.Col_A,
:OLD.Col_B,
SYSDATE,
'D');
END IF;
end;
話說...Oracle他喵的居然....把空字串當 null...一整個無言了...
所以平常常用的 IFNULL(COL_A, '') != ''
在 oracle 裡要寫成 NVL(COL_A, '') is not null
Orz...
Oracle 在下sql時,對於日期的比對 (時間區間),
無法使用 XXX_DATE >= '2015-10-02 00:00:00' 這種的寫法來下~
要利用轉日期型態 to_date('2015-10-02 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 來表示 ,
要注意的是他的 format 跟一般用字也不一樣~~
可參考
http://www.techonthenet.com/oracle/functions/to_date.php
沒有留言:
張貼留言