Oracle ขั้นตอนและฟังก์ชันที่จัดเก็บ PL/SQL พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

โปรแกรมย่อย PL/SQL คือบล็อก โปรซีเดอร์ และฟังก์ชันที่มีชื่อ ซึ่งจัดเก็บไว้ในฐานข้อมูลและเรียกใช้โดยใช้ชื่อ โปรซีเดอร์จะรันกระบวนการ และฟังก์ชันจะส่งคืนค่า โดยทั้งสองอย่างจะแลกเปลี่ยนข้อมูลผ่านพารามิเตอร์ IN, OUT และ IN OUT รวมถึงคำหลัก RETURN

  • 🧩 สองโปรแกรมย่อย: ขั้นตอนการทำงานจะดำเนินการตามกระบวนการ ในขณะที่ฟังก์ชันจะทำการคำนวณและส่งคืนค่า
  • 🔌 พารามิเตอร์: IN รับข้อมูลเข้า, OUT ส่งข้อมูลออก, และ IN OUT ทำได้ทั้งสองอย่าง
  • ↩️ กลับ: ส่งการควบคุมกลับไปยังผู้เรียกใช้ ในฟังก์ชันนั้น จะส่งคืนค่าที่มีประเภทที่ประกาศไว้ด้วย
  • 🗄️ วัตถุที่จัดเก็บ: ทั้งสองอย่างจะถูกบันทึกเป็นอ็อบเจ็กต์ในฐานข้อมูลและสามารถเรียกใช้งานได้จากบล็อกอื่นๆ
  • 🔎 เลือกการใช้งาน: ฟังก์ชันที่ไม่มีคำสั่ง DML สามารถเรียกใช้ภายในคำสั่ง SELECT ได้ แต่โปรซีเดอร์ไม่สามารถทำได้
  • 🇧🇷 ความแตกต่างที่สำคัญ: ฟังก์ชันจะต้องส่งค่ากลับ ในขณะที่โพรซีเดอร์ไม่จำเป็นต้องส่งค่ากลับ
  • 🛠️ ฟังก์ชั่นในตัว: Oracle ฟังก์ชันการแปลงหน่วยเรือ สตริง และวันที่ พร้อมใช้งานแล้ว

Oracle สตored Procedure และ Function ของ PL/SQL

PL/SQL Subprograms คืออะไร?

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้คำอธิบายโดยละเอียดเกี่ยวกับวิธีการสร้างและเรียกใช้บล็อก โปรซีเดอร์ และฟังก์ชันต่างๆ ที่ระบุไว้

ขั้นตอนและฟังก์ชันเป็นโปรแกรมย่อยที่สามารถสร้างและบันทึกไว้ในฐานข้อมูลในรูปแบบของอ็อบเจ็กต์ฐานข้อมูลได้ นอกจากนี้ยังสามารถเรียกใช้หรืออ้างอิงถึงภายในบล็อกอื่นๆ ได้อีกด้วย

นอกจากนี้เรายังจะกล่าวถึงความแตกต่างที่สำคัญระหว่างสองโปรแกรมย่อยนี้และอภิปรายกันด้วย Oracle ฟังก์ชั่นในตัว

คำศัพท์เฉพาะในโปรแกรมย่อย PL/SQL

ก่อนที่จะเรียนรู้เกี่ยวกับซับโปรแกรม PL/SQL เราจะมาพูดคุยเกี่ยวกับคำศัพท์ต่างๆ ที่เกี่ยวข้องกับซับโปรแกรมเหล่านี้กันก่อน

พารามิเตอร์

พารามิเตอร์คือตัวแปรหรือตัวแทนของค่าใดๆ ที่ถูกต้อง ประเภทข้อมูล PL/SQL ซึ่งเป็นช่องทางที่โปรแกรมย่อย PL/SQL แลกเปลี่ยนค่ากับโค้ดหลัก พารามิเตอร์นี้อนุญาตให้ป้อนข้อมูลเข้าสู่โปรแกรมย่อยและส่งออกข้อมูลได้tracคุณค่าที่ได้รับจากพวกเขา

  • ควรกำหนดพารามิเตอร์เหล่านี้พร้อมกับโปรแกรมย่อยในขณะที่สร้าง
  • ส่วนประกอบเหล่านี้ถูกรวมอยู่ในคำสั่งเรียกใช้เพื่อโต้ตอบกับโปรแกรมย่อย
  • ชนิดข้อมูลของพารามิเตอร์ในโปรแกรมย่อยและคำสั่งเรียกใช้จะต้องเหมือนกัน
  • ไม่ควรระบุขนาดของชนิดข้อมูลในขณะที่ประกาศพารามิเตอร์ เนื่องจากขนาดนั้นเปลี่ยนแปลงได้

สามารถจำแนกพารามิเตอร์ตามวัตถุประสงค์ได้ดังนี้:

  1. ในพารามิเตอร์
  2. ออกพารามิเตอร์
  3. เข้าออกพารามิเตอร์

ในพารามิเตอร์

  • ใช้สำหรับป้อนข้อมูลเข้าสู่โปรแกรมย่อย
  • ตัวแปรนี้เป็นตัวแปรแบบอ่านอย่างเดียวภายในโปรแกรมย่อย ไม่สามารถเปลี่ยนแปลงค่าของตัวแปรนี้ได้ภายในโปรแกรมย่อย
  • ในคำสั่งเรียกใช้ อาจเป็นตัวแปร ค่าคงที่ หรือนิพจน์ เช่น '5*8' หรือ 'a/b'
  • โดยค่าเริ่มต้น พารามิเตอร์จะเป็นประเภท IN

ออกพารามิเตอร์

  • ใช้สำหรับรับผลลัพธ์จากโปรแกรมย่อย
  • เป็นตัวแปรแบบอ่าน-เขียนภายในโปรแกรมย่อย สามารถเปลี่ยนแปลงค่าของตัวแปรนี้ได้ภายในโปรแกรมย่อยเหล่านั้น
  • ในคำสั่งเรียกใช้ ควรใช้ตัวแปรเสมอเพื่อเก็บค่าจากโปรแกรมย่อย

เข้าออกพารามิเตอร์

  • ใช้สำหรับการป้อนข้อมูลและรับข้อมูลจากโปรแกรมย่อย
  • เป็นตัวแปรแบบอ่าน-เขียนภายในโปรแกรมย่อย สามารถเปลี่ยนแปลงค่าของตัวแปรนี้ได้ภายในโปรแกรมย่อยเหล่านั้น
  • ในคำสั่งเรียกใช้ ควรใช้ตัวแปรเสมอเพื่อเก็บค่าจากโปรแกรมย่อย

ควรระบุประเภทของพารามิเตอร์ในขณะที่สร้างโปรแกรมย่อย

กลับ

คำสั่ง RETURN เป็นคำสำคัญที่สั่งให้คอมไพเลอร์เปลี่ยนการควบคุมจากโปรแกรมย่อยไปยังคำสั่งที่เรียกใช้ ในโปรแกรมย่อย RETURN หมายความว่าการควบคุมต้องออกจากโปรแกรมย่อยนั้น เมื่อตัวควบคุมพบ RETURN แล้ว โค้ดหลังจากนั้นจะถูกข้ามไป

โดยปกติแล้ว บล็อกหลักหรือบล็อกแม่จะเป็นผู้เรียกโปรแกรมย่อย และการควบคุมจะเปลี่ยนจากบล็อกแม่ไปยังโปรแกรมย่อยที่ถูกเรียก คำสั่ง RETURN ในโปรแกรมย่อยจะส่งการควบคุมกลับไปยังบล็อกแม่ ในกรณีของฟังก์ชัน คำสั่ง RETURN จะส่งค่ากลับมาด้วย ซึ่งชนิดข้อมูลของค่าจะถูกระบุไว้ในขณะที่ประกาศฟังก์ชัน

Procedure ใน PL/SQL คืออะไร?

A การรักษาอื่นๆ ใน PL/SQL นั้น โปรซีเจอร์คือหน่วยย่อยของโปรแกรม ซึ่งประกอบด้วยกลุ่มของคำสั่ง PL/SQL ที่สามารถเรียกใช้ได้โดยใช้ชื่อ แต่ละโปรซีเจอร์จะมีชื่อเฉพาะของตัวเองและถูกจัดเก็บไว้ใน Oracle ฐานข้อมูลในฐานะวัตถุฐานข้อมูล

หมายเหตุ โปรแกรมย่อยก็คือขั้นตอนการทำงานอย่างหนึ่ง ซึ่งต้องสร้างขึ้นด้วยตนเองตามความต้องการ เมื่อสร้างเสร็จแล้วก็จะถูกจัดเก็บเป็นอ็อบเจ็กต์ในฐานข้อมูล

คุณลักษณะของหน่วยย่อยโปรแกรมใน PL/SQL มีดังนี้:

  • ขั้นตอนการทำงานเป็นส่วนประกอบอิสระที่สามารถจัดเก็บได้ ฐานข้อมูล.
  • สามารถเรียกใช้ไฟล์เหล่านั้นโดยใช้ชื่อไฟล์เพื่อดำเนินการคำสั่ง PL/SQL ได้
  • โดยส่วนใหญ่แล้วจะใช้เพื่อดำเนินการตามกระบวนการ
  • พวกมันสามารถมีบล็อกซ้อนกัน หรือซ้อนอยู่ภายในบล็อกหรือแพ็กเกจอื่นๆ ได้
  • ประกอบด้วยส่วนประกาศ (ไม่บังคับ), ส่วนการดำเนินการ และส่วนการจัดการข้อผิดพลาด (ไม่บังคับ)
  • สามารถส่งค่าเข้าหรือดึงค่าออกจากขั้นตอนการทำงานผ่านทางพารามิเตอร์ได้
  • พารามิเตอร์เหล่านี้ควรรวมอยู่ในคำสั่งการโทร
  • โปรแกรมย่อยสามารถมีคำสั่ง RETURN เพื่อส่งการควบคุมกลับไปยังบล็อกที่เรียกใช้ได้ แต่ไม่สามารถส่งค่าใดๆ กลับมาผ่านคำสั่ง RETURN ได้
  • ไม่สามารถเรียกใช้โปรซีเจอร์โดยตรงจากคำสั่ง SELECT ได้ แต่ต้องเรียกใช้จากบล็อกอื่นหรือผ่านคีย์เวิร์ด EXEC

วากยสัมพันธ์

CREATE OR REPLACE PROCEDURE
<procedure_name>
(
<parameter1 IN/OUT <datatype>
..
.
)
[ IS | AS ]
<declaration_part>
BEGIN
<execution part>
EXCEPTION
<exception handling part>
END;
  • คำสั่ง CREATE PROCEDURE สั่งให้คอมไพเลอร์สร้างโปรซีเดอร์ใหม่ ส่วนคำหลัก 'OR REPLACE' สั่งให้คอมไพเลอร์แทนที่โปรซีเดอร์ที่มีอยู่แล้ว (ถ้ามี) ด้วยโปรซีเดอร์ใหม่นี้
  • ชื่อของขั้นตอนควรไม่ซ้ำกัน
  • คำว่า 'IS' ใช้เมื่อ stored procedure ถูกซ้อนอยู่ภายในบล็อกอื่น หาก procedure ทำงานแบบเดี่ยวๆ จะใช้ 'AS' นอกเหนือจากมาตรฐานการเขียนโค้ดนี้แล้ว ทั้งสองคำมีความหมายเหมือนกัน

ตัวอย่างที่ 1: การสร้างโปรซีเดอร์และเรียกใช้โดยใช้คำสั่ง EXEC ในตัวอย่างนี้ เราจะสร้าง Oracle ขั้นตอนการทำงานที่รับชื่อเป็นอินพุตและแสดงข้อความต้อนรับเป็นเอาต์พุต โดยใช้คำสั่ง EXEC ในการเรียกใช้งาน

CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)
IS
BEGIN
dbms_output.put_line ('Welcome '|| p_name);
END;
/
EXEC welcome_msg ('Guru99');

Code คำอธิบาย:

  • Code สาย 1: สร้างขั้นตอนการทำงานชื่อ 'welcome_msg' และพารามิเตอร์หนึ่งตัวชื่อ 'p_name' ชนิด 'IN'
  • Code สาย 4: พิมพ์ข้อความต้อนรับโดยการต่อชื่อที่ป้อนเข้ามา
  • ขั้นตอนการดำเนินการเสร็จสมบูรณ์แล้ว
  • Code สาย 7: เรียกใช้โปรซีเดอร์โดยใช้ EXEC พร้อมพารามิเตอร์ 'Guru99' ขั้นตอนการทำงานจะดำเนินการและพิมพ์ "ยินดีต้อนรับ" Guru99. "

ฟังก์ชั่นคืออะไร?

ฟังก์ชันคือโปรแกรมย่อย PL/SQL ที่ทำงานได้อย่างอิสระ เช่นเดียวกับโปรซีเจอร์ ฟังก์ชันจะมีชื่อเฉพาะและถูกจัดเก็บเป็นอ็อบเจ็กต์ในฐานข้อมูล PL/SQL ลักษณะเฉพาะของฟังก์ชันมีดังนี้:

  • ฟังก์ชันคือบล็อกอิสระที่ใช้สำหรับการคำนวณเป็นหลัก
  • ฟังก์ชันใช้คำหลัก RETURN เพื่อส่งค่ากลับ โดยชนิดข้อมูลของค่าจะถูกกำหนดไว้ในขณะที่สร้างฟังก์ชันนั้น
  • ฟังก์ชันควรส่งค่ากลับหรือยกเว้นข้อผิดพลาด โดยการส่งค่ากลับเป็นสิ่งจำเป็นในฟังก์ชัน
  • ฟังก์ชันที่ไม่มีคำสั่ง DML สามารถเรียกใช้ได้โดยตรงในคำสั่ง SELECT ในขณะที่ฟังก์ชันที่มีคำสั่ง DML สามารถเรียกใช้ได้จากบล็อก PL/SQL อื่นๆ เท่านั้น
  • มันสามารถมีบล็อกซ้อนกัน หรือซ้อนอยู่ภายในบล็อกหรือแพ็กเกจอื่นๆ ได้
  • ประกอบด้วยส่วนการประกาศ (ไม่บังคับ), ส่วนการดำเนินการ และส่วนการจัดการข้อผิดพลาด (ไม่บังคับ)
  • สามารถส่งค่าเข้าหรือดึงค่าออกจากฟังก์ชันได้ผ่านทางพารามิเตอร์
  • พารามิเตอร์เหล่านี้ควรรวมอยู่ในคำสั่งการโทร
  • นอกจากใช้คำสั่ง RETURN แล้ว ฟังก์ชันยังสามารถส่งค่ากลับผ่านพารามิเตอร์ OUT ได้อีกด้วย
  • เนื่องจากฟังก์ชันนี้จะส่งคืนค่าเสมอ ดังนั้นคำสั่งเรียกใช้จึงใช้ตัวดำเนินการกำหนดค่าเพื่อใส่ค่าลงในตัวแปรเสมอ

โครงสร้างฟังก์ชัน PL/SQL

วากยสัมพันธ์

CREATE OR REPLACE FUNCTION
<function_name>
(
<parameter1 IN/OUT <datatype>
)
RETURN <datatype>
[ IS | AS ]
<declaration_part>
BEGIN
<execution part>
EXCEPTION
<exception handling part>
END;
  • คำสั่ง `CREATE FUNCTION` สั่งให้คอมไพเลอร์สร้างฟังก์ชันใหม่ ส่วนคำสั่ง `OR REPLACE` สั่งให้คอมไพเลอร์แทนที่ฟังก์ชันที่มีอยู่แล้ว (ถ้ามี) ด้วยฟังก์ชันใหม่นี้
  • ชื่อฟังก์ชันต้องไม่ซ้ำกัน
  • ต้องระบุชนิดข้อมูล RETURN ด้วย
  • คำสำคัญ 'IS' ใช้เมื่อฟังก์ชันนั้นอยู่ภายในบล็อกอื่น หากฟังก์ชันนั้นทำงานแบบเดี่ยวๆ จะใช้ 'AS'

ตัวอย่างที่ 1: การสร้างฟังก์ชันและการเรียกใช้โดยใช้บล็อกที่ไม่ระบุชื่อ ในโปรแกรมนี้ เราสร้างฟังก์ชันที่รับชื่อเป็นอินพุตและส่งคืนข้อความต้อนรับ โดยใช้บล็อกที่ไม่ระบุชื่อและคำสั่ง SELECT เพื่อเรียกใช้ฟังก์ชันนั้น

การสร้างฟังก์ชัน PL/SQL และการเรียกใช้ฟังก์ชันนั้น

CREATE OR REPLACE FUNCTION welcome_msg_func ( p_name IN VARCHAR2) RETURN VARCHAR2
IS
BEGIN
RETURN ('Welcome '|| p_name);
END;
/
DECLARE
lv_msg VARCHAR2(250);
BEGIN
lv_msg := welcome_msg_func ('Guru99');
dbms_output.put_line(lv_msg);
END;
/
SELECT welcome_msg_func('Guru99') FROM DUAL;

Code คำอธิบาย:

  • Code สาย 1: สร้างฟังก์ชันชื่อ 'welcome_msg_func' โดยมีพารามิเตอร์ 'p_name' หนึ่งตัว ประเภท 'IN'
  • Code สาย 2: กำหนดประเภทค่าส่งคืนเป็น VARCHAR2
  • Code สาย 5: ส่งคืนค่าที่ต่อกันระหว่าง 'Welcome' และค่าพารามิเตอร์
  • Code สาย 8: บล็อกที่ไม่ระบุชื่อเพื่อเรียกใช้ฟังก์ชันข้างต้น
  • Code สาย 9: ประกาศตัวแปรโดยใช้ชนิดข้อมูลเดียวกับชนิดข้อมูลที่ส่งคืนจากฟังก์ชัน
  • Code สาย 11: เรียกใช้ฟังก์ชันและนำค่าที่ส่งกลับมาไปเก็บไว้ในตัวแปร 'lv_msg'
  • Code สาย 12: แสดงค่าตัวแปร ผลลัพธ์คือ “ยินดีต้อนรับ” Guru99. "
  • Code สาย 14: เรียกใช้ฟังก์ชันเดียวกันผ่านคำสั่ง SELECT โดยค่าที่ส่งกลับจะถูกส่งออกไปยังเอาต์พุตมาตรฐาน

ความคล้ายคลึงกันระหว่างขั้นตอนและฟังก์ชัน

  • ทั้งสองสามารถเรียกได้จากบล็อก PL/SQL อื่น
  • หากข้อผิดพลาดที่เกิดขึ้นในโปรแกรมย่อยไม่ได้รับการจัดการอย่างเหมาะสม การจัดการข้อยกเว้น ส่วนนั้นจะส่งต่อไปยังบล็อกที่เรียกใช้
  • ทั้งสองสามารถมีพารามิเตอร์ได้มากเท่าที่ต้องการ
  • ทั้งสองจะถือเป็นวัตถุฐานข้อมูลใน PL/SQL

ขั้นตอนการทำงานเทียบกับหน้าที่การใช้งาน: ความแตกต่างที่สำคัญ

การรักษาอื่นๆ ฟังก์ชัน
โดยหลักแล้วใช้เพื่อดำเนินการตามกระบวนการที่กำหนดไว้ ใช้เพื่อการคำนวณเป็นหลัก
ไม่สามารถเรียกใช้ในคำสั่ง SELECT ได้ ฟังก์ชันที่ไม่มีคำสั่ง DML สามารถเรียกใช้ได้ในคำสั่ง SELECT
ใช้พารามิเตอร์ OUT เพื่อส่งค่ากลับ ใช้คำสั่ง RETURN เพื่อส่งค่ากลับ
การส่งคืนค่าไม่ใช่ข้อบังคับ จำเป็นต้องส่งค่ากลับ
คำสั่ง RETURN ใช้สำหรับออกจากโปรแกรมย่อยเท่านั้น คำสั่ง RETURN จะออกจากโปรแกรมย่อยและส่งคืนค่าด้วย
ไม่ได้ระบุประเภทข้อมูลที่ส่งคืนในขณะสร้าง ประเภทข้อมูลที่ส่งคืนนั้นจำเป็นต้องระบุในขณะสร้างอ็อบเจ็กต์

ฟังก์ชันในตัวใน PL/SQL

PL / SQL มีฟังก์ชันในตัวหลากหลายสำหรับทำงานกับข้อมูลประเภทสตริงและวันที่ ในที่นี้เราจะมาดูฟังก์ชันที่ใช้กันทั่วไปและวิธีการใช้งาน

ฟังก์ชันการแปลง

ฟังก์ชันในตัวเหล่านี้จะแปลงชนิดข้อมูลหนึ่งไปเป็นอีกชนิดข้อมูลหนึ่ง

ชื่อฟังก์ชั่น การใช้ ตัวอย่าง
TO_CHAR แปลงข้อมูลประเภทอื่นให้เป็นข้อมูลประเภทอักขระ TO_CHAR(123);
TO_DATE (สตริง, รูปแบบ) แปลงสตริงที่กำหนดให้เป็นวันที่ โดยสตริงต้องตรงกับรูปแบบที่กำหนด TO_DATE('2015-ม.ค.-15', 'ปปปป-จันทร์-วว'); เอาท์พุต: 1 / 15 / 2015
TO_NUMBER (ข้อความ รูปแบบ) แปลงข้อความให้เป็นตัวเลขในรูปแบบที่กำหนด โดยในรูปแบบนี้ '9' หมายถึงจำนวนหลัก เลือก TO_NUMBER('1234′,'9999') จากคู่; เอาท์พุต: 1234. เลือก TO_NUMBER('1,234.45′,'9,999.99') จาก dual; เอาท์พุต: 1234.45

ฟังก์ชันสตริง

ฟังก์ชันเหล่านี้ใช้กับชนิดข้อมูลอักขระ

ชื่อฟังก์ชั่น การใช้ ตัวอย่าง
INSTR(ข้อความ, สตริง, เริ่มต้น, เกิดขึ้น) ฟังก์ชันนี้ใช้ระบุตำแหน่งของข้อความที่ต้องการค้นหาในสตริงที่กำหนด โดย text คือสตริงหลัก string คือข้อความที่ต้องการค้นหา start คือตำแหน่งเริ่มต้น (ไม่จำเป็น) และ occurrence คือจำนวนครั้งที่พบข้อความที่ค้นหา (ไม่จำเป็น) เลือก INSTR('AEROPLANE','E',2,1) จาก dual; เอาท์พุต: 2. เลือก INSTR('AEROPLANE','E',2,2) จาก dual; เอาท์พุต: 9 (E ปรากฏครั้งที่ 2)
SUBSTR (ข้อความ, จุดเริ่มต้น, ความยาว) ฟังก์ชันนี้จะหาค่าสตริงย่อยของสตริงหลัก โดย text คือสตริงหลัก start คือตำแหน่งเริ่มต้น และ length คือความยาวที่จะตัดเป็นสตริงย่อย เลือก substr('aeroplane',1,7) จาก dual; เอาท์พุต: เครื่องบิน
ส่วนบน (ข้อความ) แปลงข้อความที่ให้มาเป็นตัวอักษรพิมพ์ใหญ่ เลือก upper('guru99') จาก dual; เอาท์พุต: กูรู99
ข้อความด้านล่าง แปลงข้อความที่ให้มาเป็นตัวอักษรพิมพ์เล็ก เลือก lower('AerOpLane') จาก dual; เอาท์พุต: เครื่องบิน
INITCAP (ข้อความ) ส่งคืนข้อความที่กำหนด โดยที่ตัวอักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ เลือก INITCAP('guru99') จาก dual; เอาท์พุต: Guru99. เลือก INITCAP('my story') จาก dual; เอาท์พุต: เรื่องราวของฉัน
ความยาว (ข้อความ) ส่งคืนความยาวของสตริงที่กำหนดให้ เลือก LENGTH('guru99') จาก dual; เอาท์พุต: 6
LPAD (ข้อความ, ความยาว, อักขระเติม) เติมอักขระที่กำหนดลงในช่องว่างทางด้านซ้ายให้ครบความยาวที่กำหนด เลือก LPAD('guru99', 10, '$') จาก dual; เอาท์พุต: $$$$กูรู99
RPAD (ข้อความ, ความยาว, pad_char) เติมอักขระที่กำหนดลงในช่องว่างด้านขวาให้ครบความยาวที่กำหนด เลือก RPAD('guru99′,10,'-') จาก dual; เอาท์พุต: guru99—-
LTRIM (ข้อความ) ตัดช่องว่างด้านหน้าของข้อความออก เลือก LTRIM(' Guru99') จากคู่ เอาท์พุต: Guru99
RTRIM (ข้อความ) ตัดช่องว่างสีขาวที่อยู่ท้ายข้อความออก เลือก RTRIM('Guru99 ') จากคู่; เอาท์พุต: Guru99

ฟังก์ชั่นวันที่

ฟังก์ชันเหล่านี้ใช้สำหรับจัดการวันที่

ชื่อฟังก์ชั่น การใช้ ตัวอย่าง
เพิ่มเดือน (วันที่, จำนวนเดือน) เพิ่มเดือนที่กำหนดให้กับวันที่ เพิ่มเดือน ('2015-01-01',5); เอาท์พุต: 05 / 01 / 2015
ซิสเดต ส่งคืนวันที่และเวลาปัจจุบันของเซิร์ฟเวอร์ เลือก SYSDATE จากคู่; เอาท์พุต: 10/4/2015 2:11:43 น
ทรันซี ปัดค่าตัวแปรวันที่ลงให้เหลือค่าต่ำสุดที่เป็นไปได้ เลือก sysdate, TRUNC (sysdate) จาก dual; เอาท์พุต: 10/4/2015 2:12:39 PM, 10/4/2015
รอบที่ ปัดเศษวันที่ให้เป็นค่าที่ใกล้เคียงที่สุด ไม่ว่าจะเป็นค่าสูงสุดหรือค่าต่ำสุด เลือก sysdate, ROUND(sysdate) จาก dual; เอาท์พุต: 10/4/2015 2:14:34 PM, 10/5/2015
MONTHS_BETWEEN ส่งคืนจำนวนเดือนระหว่างสองวันที่กำหนด เลือก MONTHS_BETWEEN (sysdate+60, sysdate) จาก dual; เอาท์พุต: 2

คำถามที่พบบ่อย

ฟังก์ชันต้องส่งค่ากลับและสามารถใช้ภายในคำสั่ง SELECT ได้หากไม่มีคำสั่ง DML ส่วนโปรซีเดอร์จะเรียกใช้กระบวนการ ไม่จำเป็นต้องส่งค่ากลับ และไม่สามารถเรียกใช้จากคำสั่ง SELECT ได้

คำสั่ง IN ส่งค่าแบบอ่านอย่างเดียวเข้าไปในโปรแกรมย่อย ส่วนคำสั่ง OUT ส่งค่ากลับไปยังผู้เรียกใช้ คำสั่ง IN OUT ทำทั้งสองอย่าง คือรับค่าและส่งค่าที่อาจเปลี่ยนแปลงแล้วกลับผ่านพารามิเตอร์เดียวกัน

ใช่ ถ้าหากไม่มีคำสั่ง DML เช่น INSERT, UPDATE หรือ DELETE ฟังก์ชันที่ดำเนินการ DML สามารถเรียกใช้ได้จากบล็อก PL/SQL อื่นเท่านั้น ไม่สามารถเรียกใช้โดยตรงภายในคิวรีได้

ใช่แล้ว AI สามารถสร้างคำสั่ง CREATE PROCEDURE หรือ CREATE FUNCTION พร้อมโหมดพารามิเตอร์ที่ถูกต้องและประเภท RETURN จากคำอธิบายธรรมดาได้ Revตรวจสอบพารามิเตอร์และการจัดการข้อผิดพลาดก่อนทำการติดตั้งใช้งาน

OR REPLACE จะเขียนทับขั้นตอนหรือฟังก์ชันที่มีอยู่แล้วซึ่งมีชื่อเดียวกันโดยไม่ลบออกping ดำเนินการตามขั้นตอนแรกก่อน วิธีนี้จะช่วยรักษาสิทธิ์ในการได้รับเงินสนับสนุนไว้ และเป็นวิธีปกติในการปรับใช้โครงการย่อยที่เปลี่ยนแปลงไป

สรุปโพสต์นี้ด้วย: