ความแตกต่างระหว่างกระบวนงานที่เก็บไว้และฟังก์ชัน (พร้อมตาราง)

สารบัญ:

Anonim

Stored Procedure และ Function มีคุณสมบัติต่างกัน พวกเขามีข้อจำกัดบางอย่าง และผลลัพธ์จะแตกต่างกันในทั้งสองกรณี Stored Procedure ต้องการทั้งพารามิเตอร์อินพุตและเอาต์พุต แต่ไม่จำเป็นต้องใช้พารามิเตอร์เอาต์พุตในฟังก์ชัน สามารถเรียกใช้ฟังก์ชันได้โดยใช้กระบวนงานที่เก็บไว้ แต่วิธีตรงกันข้ามเป็นไปไม่ได้

กระบวนงานที่เก็บไว้เทียบกับฟังก์ชัน

ความแตกต่างระหว่าง Stored Procedure และ Function คือ Function จะให้ผลลัพธ์เสมอ แต่ Stored Procedure อาจไม่ให้ผลลัพธ์ในบางครั้ง ต้องระบุข้อมูลอินพุตและเอาต์พุตใน Stored Procedure แต่ในฟังก์ชันจะไม่เป็นเช่นนี้ ฟังก์ชันต้องการเพียงพารามิเตอร์อินพุตเท่านั้น Stored Procedure สามารถสร้างค่าขนาดใหญ่ได้มากถึง 1024 ค่า แต่ Function จะคืนค่าเฉพาะค่าเดียวเท่านั้น

กระบวนงานที่เก็บไว้มักจะถูกเรียกอย่างอิสระ คำสั่งดำเนินการช่วยในการเรียกกระบวนงานที่เก็บไว้อย่างอิสระ ไม่สามารถเรียกจากฟังก์ชันได้ ช่วยในการเรียกใช้ฟังก์ชันต่างๆ สามารถเรียกใช้ฟังก์ชันได้จากขั้นตอนการจัดเก็บ กระบวนงานที่เก็บไว้สามารถคืนค่า 1024 ค่าเป็นผล

ฟังก์ชันนี้ไม่ต้องการพารามิเตอร์เอาต์พุตเฉพาะใดๆ ต้องการเพียงพารามิเตอร์อินพุตเพื่อสร้างผลลัพธ์ ไม่ได้เรียกใช้ผลลัพธ์หลายรายการ ค่อนข้างจะผลิตผลเดียวเท่านั้น สามารถเขียนและฝังฟังก์ชันภายในคำสั่ง SELECT ได้ ย่อมให้ผลเสมอ ผลลัพธ์คือค่าเดียวเท่านั้นและค่าเฉพาะ

ตารางเปรียบเทียบระหว่างกระบวนงานที่เก็บไว้และฟังก์ชัน

พารามิเตอร์ของการเปรียบเทียบ

ขั้นตอนการเก็บ

การทำงาน

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

Stored Procedure คืออะไร?

การดำเนินการของ Stored Procedure ไม่ได้ขึ้นอยู่กับสิ่งใด ค่อนข้างทำงานอย่างอิสระและให้ผลลัพธ์ โดยทั่วไปจะใช้เพื่อเรียกใช้ฟังก์ชัน ขึ้นอยู่กับ Stored Procedure ว่าจะให้ผลลัพธ์หรือไม่ บางครั้งก็ไม่มีผลลัพธ์และบางครั้งก็มีหลายผลลัพธ์

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

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

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

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

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

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

ไม่มีความเป็นไปได้ที่จะคืนค่าเป็นโมฆะ มันจะคืนค่าเฉพาะเสมอ ฟังก์ชันเหล่านี้ไม่สามารถเรียกใช้ฟังก์ชันที่ผู้ใช้กำหนดเองได้ สามารถเรียกใช้ฟังก์ชันได้โดยใช้คำสั่ง select ในเซิร์ฟเวอร์ SQL ในฟังก์ชันประเภทนี้ UDF จะใช้ในชุดผลลัพธ์ภายในส่วนคำสั่งการรวม

ฟังก์ชันไม่สามารถใช้บล็อก try-catch ได้ ไม่ต้องการพารามิเตอร์เอาต์พุตเพื่อสร้างผลลัพธ์ ไม่มีข้อกำหนดของพารามิเตอร์เอาต์พุตในฟังก์ชัน คำสั่ง DML ไม่สามารถใช้ใน SQL ได้ แต่คำสั่ง select สามารถใช้ได้อย่างง่ายดายในเซิร์ฟเวอร์ประเภทนี้

ความแตกต่างหลักระหว่างกระบวนงานที่เก็บไว้และฟังก์ชัน

บทสรุป

ค่านิยมยังคงเปลี่ยนแปลงอยู่เสมอ ผลลัพธ์อาจเป็นค่าที่มากหรือน้อยก็ได้ Stored Procedure สามารถคืนค่า 1024 ค่า ขึ้นอยู่กับ Stored Procedure ว่าจะให้ผลลัพธ์หรือไม่ มันยังลดวงจรการพัฒนา Stored Procedure ส่งคืนผลลัพธ์หลายรายการ

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

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

ไม่มีข้อกำหนดของพารามิเตอร์เอาต์พุตในฟังก์ชัน สามารถเรียกใช้ฟังก์ชันได้จาก Stored Procedure ในฟังก์ชันประเภทนี้ UDF จะใช้ในชุดผลลัพธ์ภายในส่วนคำสั่งการรวม ฟังก์ชั่นจะให้ผลลัพธ์เสมอ

ความแตกต่างระหว่างกระบวนงานที่เก็บไว้และฟังก์ชัน (พร้อมตาราง)