Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้างโพรซีเดอร์ใน MySQL พร้อมพารามิเตอร์?


คุณสามารถสร้างพารามิเตอร์โดยใช้ IN และ OUT IN ใช้สำหรับรับพารามิเตอร์อินพุต และ OUT สามารถใช้สำหรับเอาต์พุตได้

ไวยากรณ์มีดังนี้

DELIMITER //CREATE PROCEDURE yourProcedureName(IN yourParameterName dataType,OUT yourParameterName dataType)BEGINyourStatement1;yourStatement2;..NEND;//DELIMITER;

ขั้นแรกเราจะสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง SumOfAll -> ( -> จำนวน int -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.78 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้

mysql> แทรกลงในค่า SumOfAll (100) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า SumOfAll (330) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงในค่า SumOfAll ( 450); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า SumOfAll (400); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้

mysql> เลือก *จาก SumOfAll;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+---------+| จำนวน |+-------+| 100 || 330 || 450 || 400 |+-------+4 แถวในชุด (0.00 วินาที)

ตอนนี้เราจะสร้าง Stored Procedure ที่จะตรวจสอบค่าว่ามีอยู่ในตารางหรือไม่ หากค่าที่ระบุไม่มีอยู่ในตาราง คุณจะได้รับค่า NULL

ขั้นตอนการจัดเก็บมีดังนี้

mysql> DELIMITER //mysql> สร้างโพรซีเดอร์ sp_ChechValue (IN value1 int, OUT value2 int) -> start -> set value2=(เลือก Amount จาก SumOfAll โดยที่ Amount=value1); -> สิ้นสุด; -> //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.20 วินาที) mysql> ตัวคั่น;

ให้เราเรียกใช้กระบวนงานที่เก็บไว้ด้วยค่าบางอย่างและเก็บผลลัพธ์ไว้ในตัวแปรเซสชัน

กรณีที่ 1:เมื่อค่าไม่มีอยู่ในตาราง

mysql> โทร sp_ChechValue(300,@isPresent);ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.00 วินาที)

ตอนนี้ตรวจสอบค่าในตัวแปร @isPresent โดยใช้คำสั่ง select แบบสอบถามมีดังนี้

mysql> เลือก @isPresent;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+| @isPresent |+-----------+| NULL |+------------+1 แถวในชุด (0.00 วินาที)

กรณีที่ 2:เมื่อมีค่าเป็นปัจจุบัน

แบบสอบถามมีดังนี้ ให้เราเรียกขั้นตอนการจัดเก็บ

mysql> โทร sp_ChechValue(330,@isPresent);ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.00 วินาที)

ตรวจสอบค่าของตัวแปรเซสชัน @isPresent แบบสอบถามมีดังนี้

mysql> เลือก @isPresent;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+| @isPresent |+-----------+| 330 |+------------+1 แถวในชุด (0.00 วินาที)