ようこそ (Jyokoso) MY BLOG

いらっしゃいませ (hajimemashite) สำหรับผู้เข้าใหม่นะค่ะ ^^V

29 มิถุนายน 2553

oracle:select

EX1 เป็นการ select ค่าที่มีเงื่อนไข โดยที่ค่าหนึ่งเกี่ยวพันกะอีกค่าต้องใช้ || มาช่วย
เช่น req_no กับ req_no_seq ถ้า req_no = A, req_no_req = 1 2 3 อะไรก็แล้วแต่ ที่เกี่ยวพันกันจะ check ว่าค่าไหนมากกว่า เวลา ทำ criteria ก็ใช้ || ต่อกัน ในกรณีนี้อาจมีช่องว่างเกิดขึ้น จะใช้ replace ร่วมด้วยก็ได้ แต่ที่เอามาเป็นตัวอย่างไม่ replace ' ','' ให้ดูเพราะมีตัวอย่างอันเก่าอยู่แล้ว

SELECT a.req_no ,a.req_no_seq
FROM ma_request a
WHERE a.req_status = 'N' AND
a.ou_code = :parameter.ou_code AND
a.req_no||a.req_no_seq BETWEEN
NVL(:criteria.s_req_no||:criteria.s_req_no_seq,'!') AND
NVL(:criteria.e_req_no||:criteria.e_req_no_seq,chr(250))
order by a.req_no, a.req_no_seq

ผู้เคราะห์ร้าย - พั้นช์ วรกาญจน์

ผิดสัญญา ปนัดดา Herspective2

28 มิถุนายน 2553

oracle:date

การเก็บ number ของ date ในฐานข้อมูลจะ เก็บข้อมูลเป็น number เราต้องการแปลงให้เป็น
วันที่ถ้าใช้ format ไม่ได้ให้ใช้ formular แทน

function CF_1Formula return varchar is
hr number;
mm number;
vTmp_ret varchar2(100);
BEGIN
hr := trunc( :measure_time / 3600 ) ;
mm := trunc( mod( :measure_time , 3600 ) / 60 ) ;

if nvl(hr+mm,0) > 0 then
vTmp_ret := replace(to_char(hr,'00')||':'||to_char(mm,'00'),' ','');
end if;

return(vTmp_ret);

END;

24 มิถุนายน 2553

ORACLE:to_char

การแปลงค่าที่เป็น number หรืออื่นๆ ให้เป็น character จะใช้ to_char และเมื่อแปลงจาก numberเป็น char จะมีช่องว่างเกิดขึ้นจคงควรให้ REPLACE เข้ามาช่วย

EX
REPLACE(TO_CHAR(NVL(S.TEST_OLD,0.00), '990.00'),' ','')
เช่นเดิมเป็น 45
จะได้ค่าใหม่เป็น45.00

23 มิถุนายน 2553

ORACLE:report

function F_MACHINE_TECH2FormatTrigger return boolean is
begin
  if :machine_tech2 is null then
      return(false);
  else
        return (TRUE);
  end if;
end;

ไว้ check ว่ามีค่ารึป่าวถ้าไม่มีค่าก็ไม่ต้องแสดงใน report

ORACLE:NVL

H.SUBJ_CODE BETWEEN NVL( :P_SUBJ_CODE,'!') AND NVL( :P_SUBJ_CODE,CHR(250))

เป็นการเปรียบเทียบว่าค่าของ subj_code ให้อยู่ระหว่าง character ที่มีค่าน้อยที่สุด ถึง ค่าที่มีค่ามากสุด NVL เป็นการแทนค่า NULL ให้หลับ record นั้นๆที่ไม่ได้ระบุค่า

17 มิถุนายน 2553

ORACLE-REPORT

EX1 report แบบ group_left


SQL-DECODE

FUNCTION FPU_GET_STATUS (vParam_Status VARCHAR2,
vParam_LinID VARCHAR2) RETURN VARCHAR2 IS

vTmp_Status VARCHAR(10);

BEGIN

BEGIN

SELECT DECODE ( vParam_Status,'N',DECODE(vParam_LinID,'EN','Normal','ปกติ'),

DECODE(vParam_LinID,'EN','Cancel','ยกเลิก'))

INTO vTmp_Status

FROM dual;

/* IF (NVL(:tr_group.status,'N') = 'N') THEN

IF (:parameter.lin_id = 'EN') THEN

vTmp_Status := 'Normal';

ELSIF (:parameter.lin_id = 'TH') THEN

vTmp_Status := 'ปกติ';

END IF;



ELSIF (NVL(:tr_group.status,'N') = 'C') THEN

IF (:parameter.lin_id = 'EN') THEN

vTmp_Status := 'Cancel';

ELSIF (:parameter.lin_id = 'TH') THEN

vTmp_Status := 'ยกเลิก';

END IF;

END IF;

*/

END;

RETURN (vTmp_Status);

END;