如果需要大量的資料匯入, 可以選擇用 SQL Loader, 但是我不會用 (汗)
Oracle 還是很貼心的, 給我們一個 API : FND_GFM, 提供比較直覺的方式, 用 tsv / csv 檔的方式把資料上傳到 Form 上
如果需要大量的資料匯入, 可以選擇用 SQL Loader, 但是我不會用 (汗)
Oracle 還是很貼心的, 給我們一個 API : FND_GFM, 提供比較直覺的方式, 用 tsv / csv 檔的方式把資料上傳到 Form 上
想要找看看, 在 11i 的版本中, 是不是 API 給 Blanket Sales Agreement (BSA) 使用, 結果很遺憾的沒有, 只有 R12 限定 (囧)
如何查詢 DB Object 的使用情況, 也就是 Dependency
1. 進入 SQL*PLUS
2. 先設定 Server Out 為 ON : SET SERVEROUT ON
3. 再輸入
BEGIN
DBMS_UTILITY.GET_DEPENDENCY('TABLE', USER, 'EMP');
END;
/
就可以看到該 DB Object 被哪些其他的 DB Object 所使用
第一個參數為該 DB Object 的類型, 例 : TABLE, VIEW, PROCEDURE
第二個參數為該 DB Object 的 Schema
第三個參數為該 DB Object 的名稱
之前有寫過一篇 Defaulting Rule 與 Package (http://aloz0101.pixnet.net/blog/post/17066963), 不過裡面沒有提到 Defaulting Rule 的設定方式, 就用這篇來說吧
畫面路徑 : OM > Setup > Rules > Defaulting
範例功能 : 如何設定自動給 Subinventory
步驟 :
有時, 我們會需要在 PL/SQL 寫一些訊息或長字串, 但是如果用到特殊字元, 就必須要做處理 (前面加上 Escape), 如果訊息長, 特殊字元又多, 那就真的很麻煩了, 這時候就可以使用 Quote Operator 了
範例 : SELECT q'#Oracle's quote operator#' FROM DUAL
q 就表示是 Quote Operator
' 就是字串範圍囉....
特別的是 ' 之後接了一個字元, 不見得要使用 #, 使用任一字元都可以, 寫成 SELECT q'COracle's quote operatorC' FROM DUAL 或 SELECT q'!Oracle's quote operator!' FROM DUAL 得到的結果都一樣
在 fmb 檔的目錄下, 輸入以下指令, 可 Compile Form
$ORACLE_HOME/bin/f60gen module=$AU_TOP/forms/US/$1.fmb userid=APPS/APPS output_file=$XX_TOP/forms/US/$1.fmx module_type=form batch=NO compile_all=special
- $1 : Form Name (整段指令可以包裝成 Shell 檔來執行)
- output_file : 指定一 Application Top 目錄 (一般客製 Form 都會放在獨立的 Application 下, 以避免與標準 Form 混在一起)
Application = 'Receivables' 下的 Lookup Type = 'RESPONSIBILITY'
Oracle 9i 之後, 有一個功能叫做 Pipelined, 它是一個 Function, 可是用法與 Table 相同, 優點有 :
- 快速, 不需等查詢執行完畢,每一筆 row 直接回傳結果
- 執行效率好
- 可輕易達成複雜的邏輯需求
- 將程式 keep 在資料庫
- 可輸入變數
- 可達成 Transformation ( 行列轉置 )
簡單的範例如下 :
當 User 操作 RMA 單時, 選擇了 Reference 後, Book order 會發生 "Quantity cannot be greater than original quantity" 的錯誤訊息. 不過, 標準畫面很難查的出來是哪一張 RMA 單 Reference 了同一張單子, 所以無法處理.
SELECT OOH1.ORDER_NUMBER A1 , OOL1.ORDERED_ITEM A2 , OOL1.LINE_NUMBER A3 , OOL1.ORDERED_QUANTITY A4 , OOH1.FLOW_STATUS_CODE A5 , OOH2.ORDER_NUMBER B1 , OOL2.LINE_NUMBER B1 , OOL2.ORDERED_QUANTITY B3 , OOH2.FLOW_STATUS_CODE B4 , OOH3.ORDER_NUMBER C1 , OOL3.LINE_NUMBER C2 , OOL3.ORDERED_QUANTITY C3 , OOH3.FLOW_STATUS_CODE C4 FROM ONT.OE_ORDER_HEADERS_ALL OOH1 , ONT.OE_ORDER_LINES_ALL OOL1 , ONT.OE_ORDER_LINES_ALL OOL2 , ONT.OE_ORDER_HEADERS_ALL OOH2 , ONT.OE_ORDER_LINES_ALL OOL3 , ONT.OE_ORDER_HEADERS_ALL OOH3 WHERE OOH1.HEADER_ID = OOL1.HEADER_ID AND OOL1.LINE_CATEGORY_CODE = 'RETURN' AND OOH1.ORDER_NUMBER = '當前的訂單編號' AND OOL1.REFERENCE_LINE_ID = OOL2.LINE_ID AND OOH2.HEADER_ID = OOL2.HEADER_ID AND OOL1.REFERENCE_LINE_ID = OOL3.REFERENCE_LINE_ID(+) AND OOH3.HEADER_ID(+) = OOL3.HEADER_ID AND OOH1.ORDER_NUMBER <> OOH3.ORDER_NUMBER
如何將 Timestamp 格式資料, 轉換為一般常用的 Date 格式
CAST(SYSTIMESTAMP AS DATE)