您的位置:首页 > 数据库 > Oracle

oracle小记之一些系统函数、自定义函数、关键字(20120719更新)

2012-06-15 10:32 447 查看
题记:收集一些在工作中常用的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


3 EXISTS, NOT EXISTS, 判断是否存在,通常放到WHERE 的后面

一些系统函数

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: