顯示具有 PLSQL 標籤的文章。 顯示所有文章
顯示具有 PLSQL 標籤的文章。 顯示所有文章

2009年11月22日 星期日

report的0秀不出來

格式改成NNN,NNN,NNN,NN0.NN
找半天,這結果真令人傷心

2009年11月19日 星期四

如何由SQL SERVER連線到ORACLE執行PACKAGE
限制條件
1、 PROCEDURE需包在PACKAGE中才能執行
2、 必須以TABLE的型態回傳值,使用型態ReturnTbl

步驟一、連線ORACLE(SQL SERVER建立)
1、建立連線伺服器
sp_addlinkedserver @server='TEST80' ,@srvproduct='Oracle',@datasrc = 'TEST80.WORLD',@provider='MSDAORA',@provstr='MSDAORA'

2、到主控台根目錄-->連線伺服器-->TEST80
3、按右鍵選內容
4、選取「安全性」頁籤,勾選「使用下列安全性條件進行連線」,輸入測試帳號/密碼

步驟二、建立PACKAGE(ORACLE建立)
--BODY
CREATE OR REPLACE PACKAGE BODY CRM.WrapPack
AS
PROCEDURE WrapPackSP( ReturnVal OUT ReturnTbl)
IS
Begin

ReturnVal( 1 ) := 0;
End WrapPackSP;
End WrapPack;
/
--SPEC
CREATE OR REPLACE PACKAGE CRM.WrapPack AS
TYPE ReturnTbl IS TABLE OF NUMBER

INDEX BY BINARY_INTEGER;
PROCEDURE WrapPackSP
(
ReturnVal OUT ReturnTbl
);
END WrapPack;
/

步驟三、執行PACKAGE(SQL SERVER執行)
SELECT * FROM OPENQUERY( TEST80 ,'{Call CRM.WrapPack.WrapPackSP({resultset 1 , ReturnVal} )}')

2009年8月12日 星期三

UNION VS UNIION ALL

Example: Table 1 : First,Second,Third,Fourth,FifthTable 2 : First,Second,Fifth,Sixth
Result Set:
UNION: First,Second,Third,Fourth,Fifth,Sixth (會移除重覆值)
UNION ALL: First,First,Second,Second,Third,Fourth,Fifth,Fifth,Sixth,Sixth (不會移除重覆值)

日期相關

抓取該月的最後一日
LAST_DAY(TO_DATE(:P_PERIOD,'YYYYMM'))

2009年8月4日 星期二

日期字串錯誤

當我傳入980807進PROC時,造成







原始錯誤程式
CREATE OR REPLACE PROCEDURE Proc_Media(P_REM_DATE IN CHAR)
AS
V_DATE CHAR(6) :='000000';
BEGIN
V_DATE:=P_REM_DATE;
END;
但是改成直接給值又不會錯誤
CREATE OR REPLACE PROCEDURE Proc_Media(P_REM_DATE IN CHAR)
AS
V_DATE CHAR(6) :='980806';
BEGIN
V_DATE:=P_REM_DATE;
END;
但覺得這樣實在太笨了,試用NUMBER,居然成功了,真是「小小智慧,大大學問」。
CREATE OR REPLACE PROCEDURE Proc_Media(P_REM_DATE IN NUMBER)
AS
V_DATE NUMBER;
BEGIN
V_DATE:=P_REM_DATE;
END;