ORACLE SQL

if I want to select a node's all children
create or replace FUNCTION GET_NEGO_OUR_TEAM
( I_NEGO_NO VARCHAR2)
RETURN VARCHAR2 IS

OUR_LIST VARCHAR2(1000) := ' ';--temp var for result list 
I BINARY_INTEGER := 0; --counter

BEGIN

FOR CODE IN (SELECT B.EMP_NO AS EMP_NO,EMP_NAME(B.EMP_NO) AS EMP_NAME
FROM RTS_NEGO_OUR_INFO_TB B
WHERE B.NEGO_NO=I_NEGO_NO
)
LOOP
IF I >= 1 THEN OUR_LIST := OUR_LIST||','||CODE.EMP_NAME;
ELSE OUR_LIST := CODE.EMP_NAME;
END IF;

I := I+1;

END LOOP;

RETURN OUR_LIST;

EXCEPTION
WHEN OTHERS THEN
RETURN '에러발생';
END;

a stupid method   

if I want to select columns from table A on some condition else select columns from table B

SELECT
  PR.PJT_NO
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.NEGO_FLAG
  ELSE NGPLAN.NEGO_FLAG
  END NEGO_FALG
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.NEGO_TYPE
  ELSE NGPLAN.NEGO_TYPE
  END NEGO_TYPE
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.NEGO_START_DATE
  ELSE NGPLAN.NEGO_START_DATE
  END NEGO_START_DATE
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.NEGO_END_DATE
  ELSE NGPLAN.NEGO_END_DATE
  END NEGO_END_DATE
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.TECH_START_DATE
  ELSE NGPLAN.TECH_START_DATE
  END TECH_START_DATE
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.TECH_END_DATE
  ELSE NGPLAN.TECH_END_DATE
  END TECH_END_DATE
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.PRICE_START_DATE
  ELSE NGPLAN.PRICE_START_DATE
  END PRICE_START_DATE
  ,CASE WHEN NGREQ.ALL_STS <='001' 
  THEN NGREQ.PRICE_END_DATE
  ELSE NGPLAN.PRICE_END_DATE
  END PRICE_END_DATE
FROM PR_PROJECT_MB PR, 
    RTS_NEGO_REQ_MB NGREQ,
    RTS_NEGO_PLAN_MB NGPLAN
WHERE NGREQ.NEGO_NO LIKE PR.PJT_NO||'%'
 AND NGREQ.NEGO_NO = NGPLAN.NEGO_NO(+)
 AND PR.PJT_NO LIKE UPPER('%20090001%')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值