題記:收集一些在工作中常用的oracle知識點,不斷的更新,不斷的積累,就當作自己的記事本吧。
一些關鍵字
1 IS NOT NULL,判斷字段否爲空
select * from t_user u where u.name is not null
2 CASE WHEN... THEN ... ELSE ... END ,條件語句
SELECT CASE WHEN '條件' IS NOT NULL THEN '條件成立' ELSE '條件不成立' END AS 結果 FROM t_user
一些系統函數
1. TO_CHAR()
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') FROM DUAL
顯示 : 2012-06-15 10:11:45
2. TO_DATE() 轉爲爲某種格式的時間
select to_date('$時間參數$ 0:0:0','yyyy-mm-dd hh24:mi:ss') from dual
時間參數可以爲 : 2012-06-15
3. TRUNC(SYSDATE) 返回當天的日期
select trunc(sysdate) from dual
顯示: 2012-7-4
4. NVL(str,replayStr)
如果str爲null,則返回指定的relayStr值;如果str不爲null,則返回str.
一些自定義函數
1. 寫一個工作用到的函數CHECK_DEMAND_IS_NOTICE,該函數需傳入一個NUMBER類型的數據,結果返回一個 VARCHAR2的類型數據
CREATE OR REPLACE FUNCTION CHECK_DEMAND_IS_NOTICE(V_DE_ID IN NUMBER) RETURN VARCHAR2
--檢查需求單是否已經通知
IS
--未被通知的待裝單數量
V_NOT_NOTICE_COUNT NUMBER(12);
BEGIN
--查詢
SELECT COUNT(1) INTO V_NOT_NOTICE_COUNT FROM ZY_POC_WAIT_ORDER W WHERE IS_NOTICE = '0'
AND EXISTS(
SELECT 1 FROM ZY_MAP_DEMAND_WAIT_ORDER Z WHERE Z.DE_ID =V_DE_ID AND W.ID = WAIT_ORDER_ID
);
--如果大於0則需求單未被通知
IF V_NOT_NOTICE_COUNT >0 THEN
RETURN '0';
END IF;
RETURN '1';
END;