BEGIN
SELECT CORDER_ID
INTO vn_corder_id2
FROM CORDER_HEAD
WHERE
CORDER_ID = vn_corder_id1
FOR UPDATE NOWAIT;
EXCEPTION WHEN No_Data_Found
THEN vn_corder_id2 := NULL;
WHEN Others THEN
IF sqlcode = -00054
THEN
is_locked := TRUE;
END IF;
IF is_locked
THEN
show_stop_message('This record can''t be updated at this time because it
is reserved for an update. If the record isn''t open for another user then this
will clear automatically in 10-20 minutes. Please try again later.');
END
IF;
END;
ようこそ (Jyokoso) MY BLOG
いらっしゃいませ (hajimemashite) สำหรับผู้เข้าใหม่นะค่ะ ^^V
26 ธันวาคม 2554
16 ธันวาคม 2554
set สี font pl/sql
set_item_instance_property('RG_LOAD_TEXT_MASTER.REG_SEQ',CURRENT_RECORD,VISUAL_ATTRIBUTE ,'BLUE');
ไว้ที่ post-query
ไว้ที่ post-query
14 พฤศจิกายน 2554
PLS 00201: ERROR ตอน compile pkg
Grant execute on dbms_crypto to
;
EX.
เข้า sys --> sysdba
Grant execute on dbms_crypto to stougd;
เวลาที่เรามีการเรียกใช้ pkg DBMS_CRYPTO ถ้าไม่ Grant สิทธิ์ ให้เราจะไม่สามารถ compile ผ่านได้
เข้า sys --> sysdba
Grant execute on dbms_crypto to stougd;
เวลาที่เรามีการเรียกใช้ pkg DBMS_CRYPTO ถ้าไม่ Grant สิทธิ์ ให้เราจะไม่สามารถ compile ผ่านได้
EX.
vByte := UTL_RAW.CAST_TO_VARCHAR2(DBMS_CRYPTO.RANDOMBYTES(1));
l_encrypted := DBMS_CRYPTO.ENCRYPT( src => l_ssn,
typ => DBMS_CRYPTO.DES3_CBC_PKCS5,
key => passkey);
vByte := UTL_RAW.CAST_TO_VARCHAR2(DBMS_CRYPTO.RANDOMBYTES(1));
l_encrypted := DBMS_CRYPTO.ENCRYPT( src => l_ssn,
typ => DBMS_CRYPTO.DES3_CBC_PKCS5,
key => passkey);
19 ตุลาคม 2554
GET_RADIO_BUTTON_PROPERTY--> ไว้ get ค่าจากปุ่ม radio
GET_RADIO_BUTTON_PROPERTY(item_id ITEM, button_name VARCHAR2, property NUMBER);
GET_RADIO_BUTTON_PROPERTY(item_name VARCHAR2, button_name VARCHAR2, property NUMBER);
EX. Get_Radio_Button_Property( it_id, 'REJECTED', VISIBLE);
it_id หรือ it_name เป็นชื่อของ radio group
button_name คือ ชื่อ ปุ่มนั้นๆ เช่น cancel ok approve etc.
property คือ คุณสมบัติที่จะนำมาใช้เช่น enable, disable, label, X_POS(ตำแหน่งในแกน X)
GET_RADIO_BUTTON_PROPERTY(item_name VARCHAR2, button_name VARCHAR2, property NUMBER);
EX. Get_Radio_Button_Property( it_id, 'REJECTED', VISIBLE);
it_id หรือ it_name เป็นชื่อของ radio group
button_name คือ ชื่อ ปุ่มนั้นๆ เช่น cancel ok approve etc.
property คือ คุณสมบัติที่จะนำมาใช้เช่น enable, disable, label, X_POS(ตำแหน่งในแกน X)
18 ตุลาคม 2554
Exception
Oracle Exception Name Oracle Error Explanation DUP_VAL_ON_INDEX ORA-00001 คุณพยายามที่จะรันคำสั่ง INSERT หรือ UPDATE ที่มีการสร้างค่าที่ซ้ำกันใน field ที่ห้ามซ้ำเช่นเป็น PK, FK TIMEOUT_ON_RESOURCE ORA-00051 คือมีการใช้ทรัพยากร หรือไม่เครื่องรันนานเกินจนหมดเวลา TRANSACTION_BACKED_OUT ORA-00061 มีการ rolled back ข้อมูลขณะที่คุณกำลัง procress INVALID_CURSOR ORA-01001 คุณพยายามอ้างถึง cursor ที่ไม่มีอยู่ อาจเกิดจาก คุณเรียก ( FETCH cursor ) ปิด cursor ก่อน เปิด cursor. NOT_LOGGED_ON ORA-01012 ไม่ได้ log-in LOGIN_DENIED ORA-01017 พยายามเข้าใช้ oracle แต่ log-in username/password ผิด NO_DATA_FOUND ORA-01403 คุณพยายามทำต่อไปนี้ :
1. select into ที่ไม่ถูก row ไม่มีค่า return
2. ไม่อ้างอิงแถวเริ่มต้นของตาราง
3. read ตอนท้าย ของ file ที่มีแพคเกจ UTL_FILETOO_MANY_ROWS ORA-01422 return กับมาหลาย row ZERO_DIVIDE ORA-01476 หารด้วย 0 INVALID_NUMBER ORA-01722 แปลงค่า string ไปเป็น number ไม่สำเร็จ STORAGE_ERROR ORA-06500 หลุดออกมาจาก memory หรือ memory เสียหาย PROGRAM_ERROR ORA-06501 "Contact Oracle support" เป็นปัญหาที่โปรแกรม oracle VALUE_ERROR ORA-06502 invalid เป็นเพราะแปลง type data เช่น วันที่ เป็น เลขหรือใช้ trunc,to_date,to_char... CURSOR_ALREADY_OPEN ORA-06511 พยายามเปิด cursor แต่ cursor เปิดอยู่
PROCEDURE CHECK_DUP_BUDGET IS
al_id NUMBER;
vTmp_dup VARCHAR2(1);
BEGIN
IF (:system.record_status in ('INSERT','NEW')) OR
(:bg_reserve_budget.forward_id <> GET_ITEM_PROPERTY( 'BG_RESERVE_BUDGET.FORWARD_ID',DATABASE_VALUE)) OR
(:bg_reserve_budget.fwd_seq <> GET_ITEM_PROPERTY( 'BG_RESERVE_BUDGET.FWD_SEQ',DATABASE_VALUE)) OR
THEN
(:bg_reserve_budget.div_code <> GET_ITEM_PROPERTY( 'BG_RESERVE_BUDGET.DIV_CODE',DATABASE_VALUE))
BEGIN
SELECT 'X'
INTO vTmp_dup
FROM bg_reserve_budget
WHERE ou_code = :parameter.ou_code
AND bg_type = :bg_reserve_master.bg_type
AND reserve_id = :bg_reserve_master.reserve_id
AND forward_id = :bg_reserve_budget.forward_id
AND fwd_seq = :bg_reserve_budget.fwd_seq
AND ROWNUM = 1;
al_id := UTIL.SHOW_MESSAGE('STOP', 'STD', '00004',
GET_ITEM_PROPERTY('BG_RESERVE_BUDGET.FORWARD_ID',PROMPT_TEXT)||' '||:bg_reserve_budget.forward_id||', '||
GET_ITEM_PROPERTY('BG_RESERVE_BUDGET.FWD_SEQ',PROMPT_TEXT)||' '||:bg_reserve_budget.fwd_seq);
--Code %1 Duplicate !!!
COPY(NVL(GET_ITEM_PROPERTY('BG_RESERVE_BUDGET.FORWARD_ID',DATABASE_VALUE),'') ,'BG_RESERVE_BUDGET.FORWARD_ID');
COPY(NVL(GET_ITEM_PROPERTY('BG_RESERVE_BUDGET.FWD_SEQ',DATABASE_VALUE),'') ,'BG_RESERVE_BUDGET.FWD_SEQ');
RAISE FORM_TRIGGER_FAILURE;
EXCEPTION WHEN NO_DATA_FOUND THEN NULL ;
-- WHEN INVALID_NUMBER THEN NULL;
END;
END IF;
END;
11 ตุลาคม 2554
update for reference other table
update bg_forward_budget
set amount = (select amount
from bg_forward_master
where forward_id = bg_forward_budget.forward_id
and bg_type ='FW' and budget_year_control =2555)
, amount_balance =(select amount
from bg_forward_master
where forward_id = bg_forward_budget.forward_id
and bg_type ='FW'
and budget_year_control =2555)
, bf_amt =(select amount
from bg_forward_master
where forward_id = bg_forward_budget.forward_id
and bg_type ='FW'
and budget_year_control =2555)
where bg_type ='FW'
and budget_year_control =2555
and amount = 0
set amount = (select amount
from bg_forward_master
where forward_id = bg_forward_budget.forward_id
and bg_type ='FW' and budget_year_control =2555)
, amount_balance =(select amount
from bg_forward_master
where forward_id = bg_forward_budget.forward_id
and bg_type ='FW'
and budget_year_control =2555)
, bf_amt =(select amount
from bg_forward_master
where forward_id = bg_forward_budget.forward_id
and bg_type ='FW'
and budget_year_control =2555)
where bg_type ='FW'
and budget_year_control =2555
and amount = 0
22 กันยายน 2554
UPDATE...set...= select
UPDATE suppliers a | |
SET supplier_name = | ( SELECT b.name FROM customers b WHERE b.customer_id = a.supplier_id) |
WHERE EXISTS ( SELECT b.name FROM customers b WHERE b.customer_id = a.supplier_id); |
07 กันยายน 2554
HAVING หลายเงื่อนไข
การใช้ having จะต้องตามหลัง group by
EX.
select a.bg_type, sum(b.amount), sum(b.add_amt), sum(b.usage_amt), sum(b.return_amt), sum(b.amount_balance)
from bg_forward_master a, bg_forward_budget b
where b.ou_code = a.ou_code
and b.bg_type = a.bg_type
and b.forward_id = a.forward_id
and a.approve_status = 'A'
--and a.bg_type = 'FW'
and b.budget_id = '897'
and a.ou_code = '000'
and a.budget_year_control = 2554
group by a.bg_type
having (sum(b.amount)>sum(b.add_amt)
and sum(b.return_amt)>sum(b.amount_balance)
)
ผลที่ได้คือ 2 เงื่อนไขคือ b.amount > b.add_amt และ b.return_am < b.amount_balance
function-->ปัดเศษ
SQL :: Math Function
ABS() ใช้หาค่าสัมบูรณ์
POWER() ใช้หาค่ายกกำลัง
SQRT() ใช้หาค่ารากที่สอง
RAND() ใช้หาค่าสุ่มระหว่าง 0 และ 1
ROUND() ใช้ปัดเศษทศนิยมตามหลักสากล ตามจำนวนจุดทศนิยมที่กำหนด
CEILING() ใช้ปัดเศษให้มีค่ามากขึ้น ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
FLOOR() ใช้ปัดเศษให้มีค่าน้อยลง ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
SING() ไว้หาประเภทจำนวนตัวเลข ถ้า -1 (จำนวนติดลบ) , 1 (จำนวนบวก), 0 จำนวนเต็ม 0
Truncate - คือการตัดเศษ ตั้งแต่หลังจุดเอามันเอาออกหมด เช่น trunc(4.67) ก็จะได้ค่า 4 โดยไม่สนว่าเลขหลังจุดมีค่าเท่าไหร่
Floor - เป็นฟังก์ชันปัดลง คือเลขจำนวนเต็มที่น้อยกว่าหรือเท่ากับค่าเดิมของมัน เช่น floor(5.6) = 5 หรือ floor(5.4) =5 เราไม่สนใจเลขหลังจุดเช่นกัน แต่เราจะพยายามหาจำนวนเต็มที่มาค่ามากที่สุดมาแทน
Ceiling - เป็นฟังก์ชันที่จะตรงข้ามกับ floor คือเลขจำนวนเต็มที่มากกว่าหรือเท่ากับค่าเดิมของมัน เช่น ceil(5.6) = 6 หรือ ceil(5.4) = 6 โดยไม่สนใจเลขหลังจุด
Round - เป็นฟังก์ชันที่ดูค่าของเศษส่วน จะถูกปัดให้เป็นเลขจำนวนเต็มมีค่าใกล้เคียงกับค่าเดิมมากที่สุด เช่น round(5.6) = 6 หรือ round(5.4) = 5
Truncate Floor Ceiling Round
3.0 3 3 3 3
3.3 3 3 4 3
3.5 3 3 4 4
3.6 3 3 4 4
-3.0 -3 -3 -3 -3
-3.3 -3 -4 -3 -3
-3.5 -3 -4 -3 -4
-3.6 -3 -4 -3 -4
ABS() ใช้หาค่าสัมบูรณ์
POWER() ใช้หาค่ายกกำลัง
SQRT() ใช้หาค่ารากที่สอง
RAND() ใช้หาค่าสุ่มระหว่าง 0 และ 1
ROUND() ใช้ปัดเศษทศนิยมตามหลักสากล ตามจำนวนจุดทศนิยมที่กำหนด
CEILING() ใช้ปัดเศษให้มีค่ามากขึ้น ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
FLOOR() ใช้ปัดเศษให้มีค่าน้อยลง ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
SING() ไว้หาประเภทจำนวนตัวเลข ถ้า -1 (จำนวนติดลบ) , 1 (จำนวนบวก), 0 จำนวนเต็ม 0
Truncate - คือการตัดเศษ ตั้งแต่หลังจุดเอามันเอาออกหมด เช่น trunc(4.67) ก็จะได้ค่า 4 โดยไม่สนว่าเลขหลังจุดมีค่าเท่าไหร่
Floor - เป็นฟังก์ชันปัดลง คือเลขจำนวนเต็มที่น้อยกว่าหรือเท่ากับค่าเดิมของมัน เช่น floor(5.6) = 5 หรือ floor(5.4) =5 เราไม่สนใจเลขหลังจุดเช่นกัน แต่เราจะพยายามหาจำนวนเต็มที่มาค่ามากที่สุดมาแทน
Ceiling - เป็นฟังก์ชันที่จะตรงข้ามกับ floor คือเลขจำนวนเต็มที่มากกว่าหรือเท่ากับค่าเดิมของมัน เช่น ceil(5.6) = 6 หรือ ceil(5.4) = 6 โดยไม่สนใจเลขหลังจุด
Round - เป็นฟังก์ชันที่ดูค่าของเศษส่วน จะถูกปัดให้เป็นเลขจำนวนเต็มมีค่าใกล้เคียงกับค่าเดิมมากที่สุด เช่น round(5.6) = 6 หรือ round(5.4) = 5
Truncate Floor Ceiling Round
3.0 3 3 3 3
3.3 3 3 4 3
3.5 3 3 4 4
3.6 3 3 4 4
-3.0 -3 -3 -3 -3
-3.3 -3 -4 -3 -3
-3.5 -3 -4 -3 -4
-3.6 -3 -4 -3 -4
02 กันยายน 2554
minus
ไว้หาความแตกต่างของ 2 table หรือ 2 query ที่มี column ที่นำมาเปรียบเทียบจำนวนเท่ากัน
syntax
select field1, field2, . field_n
from tables
MINUS
select field1, field2, . field_n
from tables;
The following is an MINUS query that uses an ORDER BY clause:
select supplier_id, supplier_name
from suppliers
where supplier_id > 2000
MINUS
select company_id, company_name
from companies
where company_id > 1000
ORDER BY 2;
select * from
(select budget_id, BG_FWD_RS_AMT,div_code -- FWD_RS_BL_AMT,/*FWD_BL_AMT,*/ BG_FWD_AMT--, BUDGET_AMT-USE_AMT USE_AMT
from bg_proj_exp_rev_yearly
where budget_year_control = 2554
--and div_code = '302'
--and (atv_code not like 'ผ%' and atv_code not like 'ผ?9%')
--and budget_id = '1'
and atv_code not like 'ผ9%'
minus
select a.budget_id, sum(a.BG_FRW_BAL), c.div_code--,/*SUM(NVL(a.FRW_BAL,0)), SUM(NVL(a.FW_BAL,0)),*/ sum(a.BG_FW_BAL)--, sum(a.BG_USAGE_BAL)
from bg_budget_movement a
, bg_proj_exp_rev_yearly c
where a.budget_year_control = 2554
and a.seq = (select max(seq)
from bg_budget_movement b
where a.ou_code = b.ou_code
and a.budget_year_control = b.budget_year_control
and a.budget_id = b.budget_id)
and a.budget_year_control = 2554
and a.ou_code = c.ou_code
and a.budget_year_control = c.budget_year_control
and a.budget_id = c.budget_id
--and c.div_code = '302'
--and (c.atv_code not like 'ผ%' and c.atv_code not like 'ผ9%')
and atv_code not like 'ผ9%'
--and a.budget_id = '1'
group by a.budget_id, c.div_code)
--where budget_id = '1226'
syntax
select field1, field2, . field_n
from tables
MINUS
select field1, field2, . field_n
from tables;
The following is an MINUS query that uses an ORDER BY clause:
select supplier_id, supplier_name
from suppliers
where supplier_id > 2000
MINUS
select company_id, company_name
from companies
where company_id > 1000
ORDER BY 2;
select * from
(select budget_id, BG_FWD_RS_AMT,div_code -- FWD_RS_BL_AMT,/*FWD_BL_AMT,*/ BG_FWD_AMT--, BUDGET_AMT-USE_AMT USE_AMT
from bg_proj_exp_rev_yearly
where budget_year_control = 2554
--and div_code = '302'
--and (atv_code not like 'ผ%' and atv_code not like 'ผ?9%')
--and budget_id = '1'
and atv_code not like 'ผ9%'
minus
select a.budget_id, sum(a.BG_FRW_BAL), c.div_code--,/*SUM(NVL(a.FRW_BAL,0)), SUM(NVL(a.FW_BAL,0)),*/ sum(a.BG_FW_BAL)--, sum(a.BG_USAGE_BAL)
from bg_budget_movement a
, bg_proj_exp_rev_yearly c
where a.budget_year_control = 2554
and a.seq = (select max(seq)
from bg_budget_movement b
where a.ou_code = b.ou_code
and a.budget_year_control = b.budget_year_control
and a.budget_id = b.budget_id)
and a.budget_year_control = 2554
and a.ou_code = c.ou_code
and a.budget_year_control = c.budget_year_control
and a.budget_id = c.budget_id
--and c.div_code = '302'
--and (c.atv_code not like 'ผ%' and c.atv_code not like 'ผ9%')
and atv_code not like 'ผ9%'
--and a.budget_id = '1'
group by a.budget_id, c.div_code)
--where budget_id = '1226'
17 มีนาคม 2554
set REQUIRED ให้กับ item
1. ต้องสร้าง parameter ขึ้นมาเพื่อรองรับ PROMPT_TEXT
2. WHEN-NEW-FORM-INSTANCE ให้เพิ่ม
:PARAMETER.ATV_EDATE := GET_ITEM_PROPERTY('MA_REPAIR.ATV_EDATE',PROMPT_TEXT);
:PARAMETER.ATV_ETIME := GET_ITEM_PROPERTY('MA_REPAIR.ATV_ETIME',PROMPT_TEXT);
3. ไว้ที่ WHEN-RADIO-CHANGED
IF :ma_repair.repair_status = '4' OR :ma_repair.repair_status = '5' then
SET_ITEM_PROPERTY('MA_REPAIR.ATV_EDATE' , PROMPT_TEXT , '*'||:parameter.atv_edate);
SET_ITEM_PROPERTY('MA_REPAIR.ATV_ETIME' , PROMPT_TEXT , '*'||:parameter.atv_etime);
ELSE
SET_ITEM_PROPERTY('MA_REPAIR.ATV_EDATE' , PROMPT_TEXT , :parameter.atv_edate);
SET_ITEM_PROPERTY('MA_REPAIR.ATV_ETIME' , PROMPT_TEXT , :parameter.atv_etime);
END IF;
ผลคือเวลา เปลี่ยน radio ก็จะทำให้ label มี * ไว้ข้างหน้าเพื่อให้รู้ว่าต้องระบุ
2. WHEN-NEW-FORM-INSTANCE ให้เพิ่ม
:PARAMETER.ATV_EDATE := GET_ITEM_PROPERTY('MA_REPAIR.ATV_EDATE',PROMPT_TEXT);
:PARAMETER.ATV_ETIME := GET_ITEM_PROPERTY('MA_REPAIR.ATV_ETIME',PROMPT_TEXT);
3. ไว้ที่ WHEN-RADIO-CHANGED
IF :ma_repair.repair_status = '4' OR :ma_repair.repair_status = '5' then
SET_ITEM_PROPERTY('MA_REPAIR.ATV_EDATE' , PROMPT_TEXT , '*'||:parameter.atv_edate);
SET_ITEM_PROPERTY('MA_REPAIR.ATV_ETIME' , PROMPT_TEXT , '*'||:parameter.atv_etime);
ELSE
SET_ITEM_PROPERTY('MA_REPAIR.ATV_EDATE' , PROMPT_TEXT , :parameter.atv_edate);
SET_ITEM_PROPERTY('MA_REPAIR.ATV_ETIME' , PROMPT_TEXT , :parameter.atv_etime);
END IF;
ผลคือเวลา เปลี่ยน radio ก็จะทำให้ label มี * ไว้ข้างหน้าเพื่อให้รู้ว่าต้องระบุ
16 มีนาคม 2554
FRM-40352: Last record of query retrieved.
IF :system.last_record = 'FALSE' THEN
Next_Record;
END IF;
FRM-40352 เกิดจาก next record ไปที่ last-record ไปต่อไม่ได้ดังนั้นจึงเกิด message แจ้ง วิธีที่ง่ายๆ คือ check ก่อนว่าเป็น
record สุดท้ายยังถ้าไม่ใช่ถึงจะ next ได้ ถ้าใช่ก็จะไม่ทำอะไร
Next_Record;
END IF;
FRM-40352 เกิดจาก next record ไปที่ last-record ไปต่อไม่ได้ดังนั้นจึงเกิด message แจ้ง วิธีที่ง่ายๆ คือ check ก่อนว่าเป็น
record สุดท้ายยังถ้าไม่ใช่ถึงจะ next ได้ ถ้าใช่ก็จะไม่ทำอะไร
04 มีนาคม 2554
FRM-40106 :no navigable items in destination block
ต้อง set ทุก fields ใน block -->property -->keybord navigable-->YES
03 มีนาคม 2554
25 กุมภาพันธ์ 2554
How to Create Auto Increment Columns in Oracle
After pointing out how not to create auto increment columns in Oracle, I suppose I should point out how to create auto increment columns in oracle.
Many will gripe about this not being a standard feature in Oracle, but when it’s as easy as two more commands after your
First let’s create a simple table to play with.
Table created.
Now we’ll assume we want ID to be an auto increment field. First we need a sequence to grab values from.
Sequence created.
Now we can use that sequence in an
Trigger created.
This trigger will automatically grab the next value from the sequence we just created and substitute it into the ID column before the insert is completed.
Now we’ll do some inserts:
1 row created.
SQL> INSERT INTO test (name) VALUES (’Bork’);
1 row created.
SQL> INSERT INTO test (name) VALUES (’Matt’);
1 row created.
SQL> SELECT * FROM test;
ID NAME
———- ——————————
1 Jon
2 Bork
3 Matt
ที่มา :http://situsnya.wordpress.com/2008/09/02/how-to-create-auto-increment-columns-in-oracle/
Many will gripe about this not being a standard feature in Oracle, but when it’s as easy as two more commands after your
CREATE TABLE
command I can’t see any good reason to use fancy SQL on every insert.First let’s create a simple table to play with.
SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));
Table created.
Now we’ll assume we want ID to be an auto increment field. First we need a sequence to grab values from.
SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;
Sequence created.
Now we can use that sequence in an
BEFORE INSERT
trigger on the table.CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON test
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
END;
/
Trigger created.
This trigger will automatically grab the next value from the sequence we just created and substitute it into the ID column before the insert is completed.
Now we’ll do some inserts:
SQL> INSERT INTO test (name) VALUES ('Jon');
1 row created.
SQL> INSERT INTO test (name) VALUES (’Bork’);
1 row created.
SQL> INSERT INTO test (name) VALUES (’Matt’);
1 row created.
SQL> SELECT * FROM test;
ID NAME
———- ——————————
1 Jon
2 Bork
3 Matt
ที่มา :http://situsnya.wordpress.com/2008/09/02/how-to-create-auto-increment-columns-in-oracle/
14 กุมภาพันธ์ 2554
ตรวจทุก record ว่าเป็นไปตามเงื่อนไขไหม
BEGIN
GO_BLOCK('BG_USAGE_PAYNAME');
FIRST_RECORD;
FOR i IN 0..NVL(:bg_usage_payname.nb_cnt_rec,0) LOOP
--message(:bg_usage_payname.nb_cnt_rec);pause;
IF :BG_USAGE_PAYNAME.PAY_TYPE_CODE IS NOT NULL AND :BG_USAGE_PAYNAME.PAY_TYPE_CODE != STBG.GET_PARAMETER('PAY_TYPE_PAC','BG') THEN
UTIL.SHOW_MESSAGE('STOP','BG','B0148',STFN.PAYMENT_TYPE_NAME(STBG.GET_PARAMETER('PAY_TYPE_PAC','BG')),GET_ITEM_PROPERTY('BG_USAGE_MASTER.INTERNAL_CHARGE_YN',PROMPT_TEXT));
:BG_USAGE_MASTER.INTERNAL_CHARGE_YN := 'N';
RAISE FORM_TRIGGER_FAILURE;
ELSE
IF NVL(:BG_USAGE_MASTER.INTERNAL_CHARGE_YN,'N') = 'Y' THEN
Set_LOV_Property('M_PAY_TYPE_CODE_LOV',GROUP_NAME,'PAY_TYPE_CODE2_REC');
ELSE
Set_LOV_Property('M_PAY_TYPE_CODE_LOV',GROUP_NAME,'PAY_TYPE_CODE_REC');
END IF;
END IF;
NEXT_RECORD;
END LOOP;
GO_ITEM('BG_USAGE_MASTER.INTERNAL_CHARGE_YN');
END;
GO_BLOCK('BG_USAGE_PAYNAME');
FIRST_RECORD;
FOR i IN 0..NVL(:bg_usage_payname.nb_cnt_rec,0) LOOP
--message(:bg_usage_payname.nb_cnt_rec);pause;
IF :BG_USAGE_PAYNAME.PAY_TYPE_CODE IS NOT NULL AND :BG_USAGE_PAYNAME.PAY_TYPE_CODE != STBG.GET_PARAMETER('PAY_TYPE_PAC','BG') THEN
UTIL.SHOW_MESSAGE('STOP','BG','B0148',STFN.PAYMENT_TYPE_NAME(STBG.GET_PARAMETER('PAY_TYPE_PAC','BG')),GET_ITEM_PROPERTY('BG_USAGE_MASTER.INTERNAL_CHARGE_YN',PROMPT_TEXT));
:BG_USAGE_MASTER.INTERNAL_CHARGE_YN := 'N';
RAISE FORM_TRIGGER_FAILURE;
ELSE
IF NVL(:BG_USAGE_MASTER.INTERNAL_CHARGE_YN,'N') = 'Y' THEN
Set_LOV_Property('M_PAY_TYPE_CODE_LOV',GROUP_NAME,'PAY_TYPE_CODE2_REC');
ELSE
Set_LOV_Property('M_PAY_TYPE_CODE_LOV',GROUP_NAME,'PAY_TYPE_CODE_REC');
END IF;
END IF;
NEXT_RECORD;
END LOOP;
GO_ITEM('BG_USAGE_MASTER.INTERNAL_CHARGE_YN');
END;
11 กุมภาพันธ์ 2554
07 กุมภาพันธ์ 2554
28 มกราคม 2554
Set_LOV_Property ต้องการเปลี่ยนดึงข้อมูลเมื่อมีค่า เปลี่ยน
BEGIN
DECLARE lov_id LOV;
BEGIN lov_id := Find_LOV('M_PAY_TYPE_CODE_LOV');
IF NVL(:BG_USAGE_MASTER.INTERNAL_CHARGE_YN,'N') = 'Y' THEN
Set_LOV_Property(lov_id,GROUP_NAME,'PAY_TYPE_CODE2_REC');
ELSE
Set_LOV_Property(lov_id,GROUP_NAME,'PAY_TYPE_CODE_REC');
END IF;
END;
END;
DECLARE lov_id LOV;
BEGIN lov_id := Find_LOV('M_PAY_TYPE_CODE_LOV');
IF NVL(:BG_USAGE_MASTER.INTERNAL_CHARGE_YN,'N') = 'Y' THEN
Set_LOV_Property(lov_id,GROUP_NAME,'PAY_TYPE_CODE2_REC');
ELSE
Set_LOV_Property(lov_id,GROUP_NAME,'PAY_TYPE_CODE_REC');
END IF;
END;
END;
26 มกราคม 2554
set_block_property &DEFAULT_WHERE
SET_BLOCK_PROPERTY('IN_TRAN_HEAD', DEFAULT_WHERE,'OU_CODE = :PARAMETER.OU_CODE AND DOC_NO = ''SPO01'' AND DOC_NO =' ||CHR(39)||:parameter.p_spo_no||CHR(39));
25 มกราคม 2554
start with & connect by
select level div_level, ou_code, div_code, div_code || ' ' || div_name div_name
from su_division
where ou_code =:parameter.ou_code
start with div_parent is null
connect by prior div_code = div_parent
and prior ou_code =:parameter.ou_code
from su_division
where ou_code =:parameter.ou_code
start with div_parent is null
connect by prior div_code = div_parent
and prior ou_code =:parameter.ou_code
20 มกราคม 2554
แก้ mail icon ใน control panel หาย
เปิด control panel แล้ว พิมพ์ คำว่า maill ลงในช่อง address ด้านบน
ง่ายป่าวๆ
ง่ายป่าวๆ
19 มกราคม 2554
Math Function
Math Function
ABS() ใช้หาค่าสัมบูรณ์
POWER() ใช้หาค่ายกกำลัง
SQRT() ใช้หาค่ารากที่สอง
RAND() ใช้หาค่าสุ่มระหว่าง 0 และ 1
ROUND() ใช้ปัดเศษทศนิยมตามหลักสากล ตามจำนวนจุดทศนิยมที่กำหนด
CEILING() ใช้ปัดเศษให้มีค่ามากขึ้น ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
FLOOR() ใช้ปัดเศษให้มีค่าน้อยลง ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
ABS() ใช้หาค่าสัมบูรณ์
POWER() ใช้หาค่ายกกำลัง
SQRT() ใช้หาค่ารากที่สอง
RAND() ใช้หาค่าสุ่มระหว่าง 0 และ 1
ROUND() ใช้ปัดเศษทศนิยมตามหลักสากล ตามจำนวนจุดทศนิยมที่กำหนด
CEILING() ใช้ปัดเศษให้มีค่ามากขึ้น ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
FLOOR() ใช้ปัดเศษให้มีค่าน้อยลง ( ปัดเศษให้เป็นเลขจำนวนเต็ม )
18 มกราคม 2554
ถ้า group by ที่เป็น character
สามารถใช้ min max ได้ แต่ถ้าเป็น sum หรืออีกหลายๆตัวจะใช้กับ number ดังนั้นใครอยากยบให้เหลือบรรทัดเดียวใช้แบบนี้ดีสุด
เช่น
SELECT MIN(emp_id),MIN(emp_name),department_id
FROM employees
GROUP BY department_id;
เช่น
SELECT MIN(emp_id),MIN(emp_name),department_id
FROM employees
GROUP BY department_id;
Subquery select ซ้อน select
EX.Subquery
SELECT emp.last_name
FROM employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_idFROM employees mgr);
SELECT emp.last_name
FROM employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_idFROM employees mgr);
update จาก table อื่น หรือ table เดิม
UPDATE copy_emp
SET department_id = (SELECT department_id FROM employees WHERE employee_id = 100)
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 200);
SET department_id = (SELECT department_id FROM employees WHERE employee_id = 100)
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 200);
insert โดย select จาก table หนึ่ง ลงอีก table หนึ่ง
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
SEQ_ORDER_BY
:system.trigger_record :บอกว่าrecordที่อยู่ตอนนี้เป็นrecordที่เท่าไรจะreturnค่าเป็นnumber
:system.last_record :บอกว่าrecordที่อยู่นี้เป็นrecordสุดท้ายหรือเปล่าจะreturnค่าเป็นboolean
seq : คือค่า MAX +1
seq_order_by : เป็นค่า seq. ที่เป็นแบบ Auto Running
วิธีการทำ SEQ_ORDER_BY
KEY-ENTER-QUERY
NULL;
/****************************************************************************************************/
WHEN-CREATE-RECCORD
:ar_gl_interface.seq_order_by := TO_NUMBER(:system.trigger_record);
/****************************************************************************************************/
KEY-CLRREC
DECLARE
nTmp_seq_orderby number(5);
vTmp_BlockName VARCHAR2(100) := 'AR_GL_INTERFACE';
BEGIN
GO_BLOCK(vTmp_BlockName);
--IF UTIL.SHOW_ALERT_DELETE = 'Y' THEN
DELETE_RECORD;
nTmp_seq_orderby := :system.trigger_record;
LOOP
:ar_gl_interface.seq_order_by := :system.trigger_record;
EXIT WHEN :system.last_record = 'TRUE';
NEXT_RECORD;
END LOOP;
--END IF;
GO_RECORD(nTmp_seq_orderby);
END;
/****************************************************************************************************/
KEY-CREREC
DECLARE
nTmp_seq_orderby number(5);
BEGIN
IF :qa_user_confirm.user_id is not null THEN
nTmp_seq_orderby := :system.trigger_record;
LOOP
EXIT WHEN :system.last_record = 'TRUE';
NEXT_RECORD;
:qa_user_confirm.seq := TO_NUMBER(:system.trigger_record)+1;
END LOOP;
GO_RECORD(nTmp_seq_orderby);
CREATE_RECORD;
ELSE
message('FRM-40102: Record must be entered or delete first.');synchronize ;
END IF;
END;
/****************************************************************************************************/
KEY- DELREC
DECLARE
nTmp_seq_orderby number(5);
vTmp_BlockName VARCHAR2(100) := 'QA_USER_CONFIRM';
BEGIN
GO_BLOCK(vTmp_BlockName);
IF UTIL.SHOW_ALERT_DELETE = 'Y' THEN
DELETE_RECORD;
nTmp_seq_orderby := :system.trigger_record;
FOR I IN 1..:qa_user_confirm.nb_cnt_rec LOOP
:ar_gl_interface.seq_order_by := :system.trigger_record;
EXIT WHEN :system.last_record = 'TRUE';
NEXT_RECORD;
END LOOP;
END IF;
GO_RECORD(nTmp_seq_orderby);
END;
:system.last_record :บอกว่าrecordที่อยู่นี้เป็นrecordสุดท้ายหรือเปล่าจะreturnค่าเป็นboolean
seq : คือค่า MAX +1
seq_order_by : เป็นค่า seq. ที่เป็นแบบ Auto Running
วิธีการทำ SEQ_ORDER_BY
KEY-ENTER-QUERY
NULL;
/****************************************************************************************************/
WHEN-CREATE-RECCORD
:ar_gl_interface.seq_order_by := TO_NUMBER(:system.trigger_record);
/****************************************************************************************************/
KEY-CLRREC
DECLARE
nTmp_seq_orderby number(5);
vTmp_BlockName VARCHAR2(100) := 'AR_GL_INTERFACE';
BEGIN
GO_BLOCK(vTmp_BlockName);
--IF UTIL.SHOW_ALERT_DELETE = 'Y' THEN
DELETE_RECORD;
nTmp_seq_orderby := :system.trigger_record;
LOOP
:ar_gl_interface.seq_order_by := :system.trigger_record;
EXIT WHEN :system.last_record = 'TRUE';
NEXT_RECORD;
END LOOP;
--END IF;
GO_RECORD(nTmp_seq_orderby);
END;
/****************************************************************************************************/
KEY-CREREC
DECLARE
nTmp_seq_orderby number(5);
BEGIN
IF :qa_user_confirm.user_id is not null THEN
nTmp_seq_orderby := :system.trigger_record;
LOOP
EXIT WHEN :system.last_record = 'TRUE';
NEXT_RECORD;
:qa_user_confirm.seq := TO_NUMBER(:system.trigger_record)+1;
END LOOP;
GO_RECORD(nTmp_seq_orderby);
CREATE_RECORD;
ELSE
message('FRM-40102: Record must be entered or delete first.');synchronize ;
END IF;
END;
/****************************************************************************************************/
KEY- DELREC
DECLARE
nTmp_seq_orderby number(5);
vTmp_BlockName VARCHAR2(100) := 'QA_USER_CONFIRM';
BEGIN
GO_BLOCK(vTmp_BlockName);
IF UTIL.SHOW_ALERT_DELETE = 'Y' THEN
DELETE_RECORD;
nTmp_seq_orderby := :system.trigger_record;
FOR I IN 1..:qa_user_confirm.nb_cnt_rec LOOP
:ar_gl_interface.seq_order_by := :system.trigger_record;
EXIT WHEN :system.last_record = 'TRUE';
NEXT_RECORD;
END LOOP;
END IF;
GO_RECORD(nTmp_seq_orderby);
END;
17 มกราคม 2554
FRM-30064 / FRM-30085 + ORA-00942 Errors
เคยเจอ error แบบนี้เวลา CTL+T หรือ ตอน run ให้ดู 2 ที่ table ที่ select ขึ้นมา collumn มีใน base จริงๆป่าว
กับดูที่ lov แล้ว copy ที่ query ไว้ไปไว้ที่ toad ลอง compile ดู ก็จะรู้ว่าติดตรงไหน ถ้าไม่ติดแสดงว่าไม่ใช่ที่นี่
กับดูที่ lov แล้ว copy ที่ query ไว้ไปไว้ที่ toad ลอง compile ดู ก็จะรู้ว่าติดตรงไหน ถ้าไม่ติดแสดงว่าไม่ใช่ที่นี่
ผู้หญิงมักมีเหตุผลที่ฟังขึ้นเสมอ
บ่ายวันหนึ่งระหว่างหญิงสาวสวยกำลังซักผ้าอยู่ริมน้ำนั้นแปรงซักผ้าคู่มือก็ หลุดมือจมน้ำไป หญิงสาวสวยก็ทำอะไรไม่ถูกได้แต่นั่งร้องไห้อยู่ริมน้ำ
ทันใดนั้นเองเทวดาก็ลอยขึ้นมาจากผิวน้ำแล้วถามว่า ' มีปัญหาอะไรรึ '
' แปรงซักผ้าดิฉันตกลงไปในน้ำแล้ว และตรงนี้น้ำลึกมาก
ต่อไปดิฉันจะเอาอะไรไปซักผ้าหาเลี้ยงลูกสามีได้หละท่าน '
เทวดาได้ยินดังนั้นก็ดำน้ำลงไปสักพักแล้วขึ้นมาพร้อมกับแปรงซักผ้าทองคำ
' เอ้า..แปรงซักผ้านี้ใช่แปรงซักผ้าของเจ้าใช่รึไม่ ?' เทวดาถามหญิงสาวสวย
' ไม่ใช่ค่ะ '
เทวดาก็ดำน้ำลงไปอีกครั้งกลับขึ้นมากับแปรงซักผ้าเงิน
' เอ้า..แล้วแปรงซักผ้านี้หละใช่ของเจ้ารึไม่ ?'
' ไม่ใช่ค่ะ แปรงซักผ้าของดิฉันทำจากเหล็กมีด้ามไม้เก่าๆ ไม่ใช่แปรงซักผ้าเงิน แปรงซักผ้าทอง '
เทวดาจึงดำลงน้ำไปอีกครั้งแล้วกลับขึ้นมาพร้อมกับแปรงซักผ้าเหล็กคู่มือหญิงสาวสวย
' เอ้า..แปรงซักผ้าของเจ้า แต่เราเห็นเจ้าเป็นคนดีซื่อสัตย์
ไม่โกหก เราจะให้แปรงซักผ้าเงิน กับแปรงซักผ้าทองคำแก่เจ้าไปด้วยเพื่อตอบแทนในการที่เจ้าเป็นคนดี '
หญิงสาวสวยจึงรับแปรงซักผ้าไว้แล้วกลับบ้านด้วยความสุข
หนึ่งเดือนต่อมา ..............
ระหว่าง ที่หญิงสาวสวยกำลังเดินเล่นอยู่ริมน้ำพร้อมกับสามีของเธออยู่นั้น สามีก็ลื่นตกน้ำไป หญิงสาวสวยทำอะไรไม่ถูกได้แต่นั่งร้องไห้ริมน้ำ
ทันใดนั้นเทวดาองค์เดิมก็ปรากฏกายออกมาอีกครั้ง
' เอ้าคราวนี้เจ้ามีปัญหาอะไรรึ '
' สามีดิฉันลื่นตกน้ำไปเมื่อกี้นี้ค่ะ '
ได้ยินดังนั้นเทวดาจึงดำน้ำลงไป และขึ้นมาพร้อมกับผู้ชายคนหนึ่งที่เหมือนกันกับพี่เคน ธีรเดช วงษ์พัวพันธุ์
ตั้งแต่หัวจรดเท้า ' ผู้ชายคนนี้ใช่สามีเจ้ารึไม่ ?'
'ใช่แล้วค่ะ ' หญิงสาวสวยตอบทันที
เทวดาจึงโกรธมาก เพราะเห็นว่าหญิงสาวสวยโกหกและไม่ซื่อสัตย์เหมือนก่อน
' ขออภัยด้วยค่ะท่านเทวดา มันเป็นการเข้าใจผิดค่ะ '
หญิงสาวสวยรีบชี้แจงทันใด
'ถ้าเกิดดิฉันตอบว่าไม่ใช่ ดิฉันเดาว่าท่านก็คงจะลงไปในน้ำอีกครั้ง แล้วกลับขึ้นมาพร้อมกับผู้ชายที่เหมือนกับ มาริโอ้
และเมื่อดิฉันปฏิเสธอีก ท่านก็คงจำดำลงไปอีกครั้งแล้วนำสามีดิฉันตัวจริงขึ้นมา สุดท้ายท่านก็คงจะให้ผู้ชายอีก 2 คนดิฉันด้วย
เพื่อตอบแทนที่ดิฉันไม่โกหก
แต่ว่า .... ดิฉันเป็นแค่หญิงสาวสวยจะมีปัญญาอะไรไปหาเงินเลี ้ยงสามีพร้อมกัน 3 คนได้หละค่ะ (รับไม่ไหวค่ะ ได้ทีละคน)
ดิฉันจึงจำเป็นต้องตอบว่าใช่ตั้งแต่แรก '
เทวดา ' เออ!!!จริงของมึง '
นิทานเรื่องนี้สอนให้รู้ว่า เมื่อใดที่ผู้หญิงโกหก
แสดงว่าหญิงผู้นั้นจะต้องมีเหตุผลจำเป็นในการโกหก และมีเจตนาดีอย่างแน่นอน
ที่มา : http://guru.google.co.th/guru/thread?table=%2Fguru%2F&tid=0a4d20d172e4df45&fid=0a4d20d172e4df4500049a01a1b75119
ทันใดนั้นเองเทวดาก็ลอยขึ้นมาจากผิวน้ำแล้วถามว่า ' มีปัญหาอะไรรึ '
' แปรงซักผ้าดิฉันตกลงไปในน้ำแล้ว และตรงนี้น้ำลึกมาก
ต่อไปดิฉันจะเอาอะไรไปซักผ้าหาเลี้ยงลูกสามีได้หละท่าน '
เทวดาได้ยินดังนั้นก็ดำน้ำลงไปสักพักแล้วขึ้นมาพร้อมกับแปรงซักผ้าทองคำ
' เอ้า..แปรงซักผ้านี้ใช่แปรงซักผ้าของเจ้าใช่รึไม่ ?' เทวดาถามหญิงสาวสวย
' ไม่ใช่ค่ะ '
เทวดาก็ดำน้ำลงไปอีกครั้งกลับขึ้นมากับแปรงซักผ้าเงิน
' เอ้า..แล้วแปรงซักผ้านี้หละใช่ของเจ้ารึไม่ ?'
' ไม่ใช่ค่ะ แปรงซักผ้าของดิฉันทำจากเหล็กมีด้ามไม้เก่าๆ ไม่ใช่แปรงซักผ้าเงิน แปรงซักผ้าทอง '
เทวดาจึงดำลงน้ำไปอีกครั้งแล้วกลับขึ้นมาพร้อมกับแปรงซักผ้าเหล็กคู่มือหญิงสาวสวย
' เอ้า..แปรงซักผ้าของเจ้า แต่เราเห็นเจ้าเป็นคนดีซื่อสัตย์
ไม่โกหก เราจะให้แปรงซักผ้าเงิน กับแปรงซักผ้าทองคำแก่เจ้าไปด้วยเพื่อตอบแทนในการที่เจ้าเป็นคนดี '
หญิงสาวสวยจึงรับแปรงซักผ้าไว้แล้วกลับบ้านด้วยความสุข
หนึ่งเดือนต่อมา ..............
ระหว่าง ที่หญิงสาวสวยกำลังเดินเล่นอยู่ริมน้ำพร้อมกับสามีของเธออยู่นั้น สามีก็ลื่นตกน้ำไป หญิงสาวสวยทำอะไรไม่ถูกได้แต่นั่งร้องไห้ริมน้ำ
ทันใดนั้นเทวดาองค์เดิมก็ปรากฏกายออกมาอีกครั้ง
' เอ้าคราวนี้เจ้ามีปัญหาอะไรรึ '
' สามีดิฉันลื่นตกน้ำไปเมื่อกี้นี้ค่ะ '
ได้ยินดังนั้นเทวดาจึงดำน้ำลงไป และขึ้นมาพร้อมกับผู้ชายคนหนึ่งที่เหมือนกันกับพี่เคน ธีรเดช วงษ์พัวพันธุ์
ตั้งแต่หัวจรดเท้า ' ผู้ชายคนนี้ใช่สามีเจ้ารึไม่ ?'
'ใช่แล้วค่ะ ' หญิงสาวสวยตอบทันที
เทวดาจึงโกรธมาก เพราะเห็นว่าหญิงสาวสวยโกหกและไม่ซื่อสัตย์เหมือนก่อน
' ขออภัยด้วยค่ะท่านเทวดา มันเป็นการเข้าใจผิดค่ะ '
หญิงสาวสวยรีบชี้แจงทันใด
'ถ้าเกิดดิฉันตอบว่าไม่ใช่ ดิฉันเดาว่าท่านก็คงจะลงไปในน้ำอีกครั้ง แล้วกลับขึ้นมาพร้อมกับผู้ชายที่เหมือนกับ มาริโอ้
และเมื่อดิฉันปฏิเสธอีก ท่านก็คงจำดำลงไปอีกครั้งแล้วนำสามีดิฉันตัวจริงขึ้นมา สุดท้ายท่านก็คงจะให้ผู้ชายอีก 2 คนดิฉันด้วย
เพื่อตอบแทนที่ดิฉันไม่โกหก
แต่ว่า .... ดิฉันเป็นแค่หญิงสาวสวยจะมีปัญญาอะไรไปหาเงินเลี ้ยงสามีพร้อมกัน 3 คนได้หละค่ะ (รับไม่ไหวค่ะ ได้ทีละคน)
ดิฉันจึงจำเป็นต้องตอบว่าใช่ตั้งแต่แรก '
เทวดา ' เออ!!!จริงของมึง '
นิทานเรื่องนี้สอนให้รู้ว่า เมื่อใดที่ผู้หญิงโกหก
แสดงว่าหญิงผู้นั้นจะต้องมีเหตุผลจำเป็นในการโกหก และมีเจตนาดีอย่างแน่นอน
ที่มา : http://guru.google.co.th/guru/thread?table=%2Fguru%2F&tid=0a4d20d172e4df45&fid=0a4d20d172e4df4500049a01a1b75119
13 มกราคม 2554
CNBLUE - 사랑 빛 (Love Light)
그댈 보면 얼굴이 빨개지고
คือ แดล โบมยอน ออล กุล อี พาล แก จิ โก
그댈 보면 가슴이 두근두근
คือ แดล โบมยอน กา ซึม อี ดู กึน ดู กึน
아이처럼 수줍게 말하고
อา อี ชอ รอม ซุ จุม เก มาล ฮา โก
그댈 보면 괜시리 웃음이 나
คือ แดล โบมยอน แควน ซี รี อุซ อิม อี นา
바보처럼 자꾸만 그래
พา โบ ชอ รอม จา กู มาน คึ แร
아마 내게 사랑이 온 것 같아
อา มา แน เก ซา รัง อี อน กอซ กาทเท
그대는 내 마음 속의 President
คือ แด นึน เน มา อึม ซุก อี president
내 가슴의 별 수놓지
แน กา ซึม อี บยอล ซู นด จี
I’m Genie for you Girl
I’m Genie for you Girl
내 숨을 멎게 하지
แน ซู มึล มอช เก ฮาชี
그대가 원하는 건 다
คือ แด กา วอน ฮา นึน กอน ดา
너를 사랑하니까
นอ ลึล ซา รัง ฮา นี กา
내 사랑에 이유는 없잖아 You know
แน ซา รัง เง อี ยู นึน ออบ ชัน ฮา you know
그대는 Darling
คือ แด นึน darling
밤 하늘 별빛보다 아름다워요
บัม ฮา นึล บยอล บิช ดา อา ลึม ดา วอ โย
내 맘속 깊은 곳에서 반짝거리는
แน มัม ซก คี พึน โก เซ ซอ พัน จัก กอ รี นึน
나 만의 사랑 빛
นา มัน อี ซา รัง พิช
그대를 사랑해요 Darling
คือ แด ลึล ซา รัง เฮ โย darling
언제나 내 곁에서 빛을 내줘요
ออน เจ นา แน กยอ เท ซอ บี ชึน แนช วอ โย
매일밤 바라보고
แม อิล พัม บา รา โบ โก
바라봐도 아름다워요
บา รา บวา โด อา รึม ดา วอ โย
그댄 나의 사랑 빛
คือ แดน นาอี ซา รัง บิช
그댈 보면 구름을 나는 기분
คือ แดล โบมยอน กู รือ มึล นา นึน กี บุน
유치해도 자꾸만 그래
ยู ชี แฮ โด ชา กู มัน คือ แร
아마 내게 사랑이 온 건 가봐
ยา มา แน เด ซา รัง งี อน กอน กาบวา
그대는 Darling
คือ แด นึน darling
밤 하늘 별빛보다 아름다워요
บัม ฮา นึล บยอล บิช ดา อา ลึม ดา วอ โย
내 맘속 깊은 곳에서 반짝거리는
แน มัม ซก คี พึน โก เซ ซอ พัน จัก กอ รี นึน
나 만의 사랑 빛
นา มัน อี ซา รัง พิช
그대를 사랑해요 Darling
คือ แด ลึล ซา รัง แฮ โย Darling
언제나 내 곁에서 빛을 내줘요
ออน เจ นา แน กยอ เท ซอ บี ชึน แนช วอ โย
매일밤 바라보고
แม อิล พัม บา รา โบ โก
바라봐도 아름다워요
บา รา บวา โด อา รึม ดา วอ โย
그댄 나의 사랑 빛
คือ แดน นา อี ซา รัง บิช
그대는 Lovely
คือ แด นึน lovely
저 하늘 햇살보다 눈이 부셔요
ชอ ฮา นุน แฮช ชัล โบดา นู นี บู ชยอโย
내 맘속 어둔 곳까지 밝게 비추는
แน มัม ซก ออ ดุน กซ กา ชี บัล เก บี ชู นึน
나만의 사랑 빛
นา มาน อี ซา รัง บิซ
그대를 사랑해요 Lovely
คือ แด ลึล ซา รัง แฮ โย Lovely
두 눈을 감아봐도 그대 보여요
ดู นู ลึล คา มา บวา โด คือ แด โบ ยอ โย
이렇게 바라보고
อี รอค เก บา รา บวา โก
바라봐도 눈이 부셔요
บา รา บวา โด นู นี บู ซยอ โย
그댄 나의 사랑 빛
คือ แดน นา อี ซา รัง บิช
07 มกราคม 2554
ช่องว่าง
ฟังเพลง ช่องว่าง (เพลงประกอบละครคุณชายติดหรู คุณหนูติดดิน) ปนัดดา เรืองวุฒิ
ปนัดดา เรืองวุฒิ - ช่องว่าง
(เพลงประกอบละคร คุณชายติดหรู
คุณหนูติดดิน)
คำร้อง มณฑวรรณ ศรีวิเชียร
ทำนอง อินทัช เรืองชาญ
เรียบเรียง เรืองกิจ ยงปิยะกุล
จากคนที่ดูแตกต่าง จากคนที่ดูไกลห่าง
อย่างกับจะไม่มีทาง
ที่ทำให้เราต้องมาพบหรือเจอกัน
จากคนที่มองผ่านๆ จากคนที่ไม่สำคัญ
กลับกลายเป็นผูกพันกัน แค่เพียงหันมา
เมื่อมองตาก็รู้ใจ
เมื่อก่อนนั้น เหมือนมีช่องว่าง
ให้เธอกับฉัน
ใกล้กันก็ดูเหมือนห่างไกล
ความรักเติมเต็มช่องว่างระหว่างเรา
ที่ใครบอกกล่าววันนี้ฉันเพิ่งเข้าใจ
ความรักละลายให้ตัวฉันและเธอหมดไป
และกลายเป็นแค่เราเพียงคำเดียว
จากคนที่มองผ่านๆ จากคนที่ไม่สำคัญ
กลับกลายเป็นผูกพันกัน แค่เพียงหันมา
เมื่อมองตาก็รู้ใจ
เมื่อก่อนนั้น เหมือนมีช่องว่าง
ให้เธอกับฉัน
ใกล้กันก็ดูเหมือนห่างไกล
ความรักเติมเต็มช่องว่างระหว่างเรา
ที่ใครบอกกล่าววันนี้ฉันเพิ่งเข้าใจ
ความรักละลายให้ตัวฉันและเธอหมดไป
และกลายเป็นแค่เราเพียงคำเดียว
ปนัดดา เรืองวุฒิ - ช่องว่าง
(เพลงประกอบละคร คุณชายติดหรู
คุณหนูติดดิน)
คำร้อง มณฑวรรณ ศรีวิเชียร
ทำนอง อินทัช เรืองชาญ
เรียบเรียง เรืองกิจ ยงปิยะกุล
จากคนที่ดูแตกต่าง จากคนที่ดูไกลห่าง
อย่างกับจะไม่มีทาง
ที่ทำให้เราต้องมาพบหรือเจอกัน
จากคนที่มองผ่านๆ จากคนที่ไม่สำคัญ
กลับกลายเป็นผูกพันกัน แค่เพียงหันมา
เมื่อมองตาก็รู้ใจ
เมื่อก่อนนั้น เหมือนมีช่องว่าง
ให้เธอกับฉัน
ใกล้กันก็ดูเหมือนห่างไกล
ความรักเติมเต็มช่องว่างระหว่างเรา
ที่ใครบอกกล่าววันนี้ฉันเพิ่งเข้าใจ
ความรักละลายให้ตัวฉันและเธอหมดไป
และกลายเป็นแค่เราเพียงคำเดียว
จากคนที่มองผ่านๆ จากคนที่ไม่สำคัญ
กลับกลายเป็นผูกพันกัน แค่เพียงหันมา
เมื่อมองตาก็รู้ใจ
เมื่อก่อนนั้น เหมือนมีช่องว่าง
ให้เธอกับฉัน
ใกล้กันก็ดูเหมือนห่างไกล
ความรักเติมเต็มช่องว่างระหว่างเรา
ที่ใครบอกกล่าววันนี้ฉันเพิ่งเข้าใจ
ความรักละลายให้ตัวฉันและเธอหมดไป
และกลายเป็นแค่เราเพียงคำเดียว
ตื่นขึ้นมาด้วยแสงสว่าง (เพลงใครสักคน)
เพลงใครสักคน By มาช่า
ตื่นขึ้นมาทุกวัน
ฉันยังเหมือนเดิม
เริ่มชีวิต ด้วยแสงสว่าง
และยังมองเห็นแสงตะวัน ที่สดใส
แต่พอมองเข้าไป ที่ใจฉันเอง
กลับได้พบ แค่ความเดียวดาย
เก็บความเงียบเหงา ไว้ในใจมานาน
ฉันหวังได้พบ คนที่ห่วงใย
ที่มีความรัก จริงใจให้กัน
อาจมีวันนั้น ฉันคงได้พบเจอจริงจริง
อยู่แห่งไหนคนที่ฉันเฝ้าคอยเจอ
อยากจะรู้เพียง ทุกวันนี้เงาของเธอ อยู่ไหน
สุดขอบฟ้า อาจจะตามหาเธอได้
ก็คงจะไม่ยากเกินเกินที่ใจจะตาม ไปไขว่คว้า
อยากมีใครซักคน ที่เดินเข้ามา
ให้ความรัก และให้ไออุ่น
ต่อเติมชีวิต ที่ดี ให้กับฉัน
อาจเป็นใครซักคน ที่พอรู้ใจ
ที่จะพร้อม ก้าวไปด้วยกัน
และใครคนนั้น หวังซักวัน คงเจอ
อยู่แห่งไหนคนที่ฉันเฝ้าคอยเจอ
อยากจะรู้เพียง ทุกวันนี้เงาของเธอ อยู่ไหน
สุดขอบฟ้า อาจจะตามหาเธอได้
ก็คงจะไม่ยากเกิน เกินที่ใจจะตาม ไปไขว่คว้า
อยากมีใครซักคน ที่เดินเข้ามา
ให้ความรัก และให้ไออุ่น
กับใครคนนั้น ที่มีความจริงใจ
อาจมีวันนั้น ฉันคงเจอ ตัวจริง
ตื่นขึ้นมาทุกวัน
ฉันยังเหมือนเดิม
เริ่มชีวิต ด้วยแสงสว่าง
และยังมองเห็นแสงตะวัน ที่สดใส
แต่พอมองเข้าไป ที่ใจฉันเอง
กลับได้พบ แค่ความเดียวดาย
เก็บความเงียบเหงา ไว้ในใจมานาน
ฉันหวังได้พบ คนที่ห่วงใย
ที่มีความรัก จริงใจให้กัน
อาจมีวันนั้น ฉันคงได้พบเจอจริงจริง
อยู่แห่งไหนคนที่ฉันเฝ้าคอยเจอ
อยากจะรู้เพียง ทุกวันนี้เงาของเธอ อยู่ไหน
สุดขอบฟ้า อาจจะตามหาเธอได้
ก็คงจะไม่ยากเกินเกินที่ใจจะตาม ไปไขว่คว้า
อยากมีใครซักคน ที่เดินเข้ามา
ให้ความรัก และให้ไออุ่น
ต่อเติมชีวิต ที่ดี ให้กับฉัน
อาจเป็นใครซักคน ที่พอรู้ใจ
ที่จะพร้อม ก้าวไปด้วยกัน
และใครคนนั้น หวังซักวัน คงเจอ
อยู่แห่งไหนคนที่ฉันเฝ้าคอยเจอ
อยากจะรู้เพียง ทุกวันนี้เงาของเธอ อยู่ไหน
สุดขอบฟ้า อาจจะตามหาเธอได้
ก็คงจะไม่ยากเกิน เกินที่ใจจะตาม ไปไขว่คว้า
อยากมีใครซักคน ที่เดินเข้ามา
ให้ความรัก และให้ไออุ่น
กับใครคนนั้น ที่มีความจริงใจ
อาจมีวันนั้น ฉันคงเจอ ตัวจริง
สมัครสมาชิก:
บทความ (Atom)