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

กระบวนงานที่เก็บไว้ MySQL คืนค่า?


ในการคืนค่าจากกระบวนงานที่เก็บไว้ คุณต้องใช้ตัวแปรเฉพาะของเซสชันที่ผู้ใช้กำหนด ใส่สัญลักษณ์ @ ก่อนชื่อตัวแปร

ตัวอย่างเช่น ใช้ @symbol สำหรับตัวแปร valido ไวยากรณ์สำหรับสิ่งเดียวกันมีดังนี้:

SELECT @valido;

เมื่อใดก็ตามที่คุณใช้คำสั่ง select คุณต้องใช้ @anyVariableName ไวยากรณ์มีดังนี้:

SELECT @anyVariableName;

นี่คือตัวอย่างขั้นตอนการจัดเก็บค่าส่งคืน แบบสอบถามเพื่อสร้างกระบวนงานที่เก็บไว้มีดังนี้:

mysql> สร้างโพรซีเดอร์ ReturnValueFrom_StoredProcedure -> ( -> In num1 int, -> In num2 int, -> out valido int -> ) -> Begin -> IF (num1> 4 and num2> 5) THEN -> SET valido =(num1+num2); -> ELSE -> SET valido =(num1-num2); -> สิ้นสุดถ้า; -> เลือก @valido; -> สิ้นสุด // แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.32 วินาที) mysql> DELIMITER;

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

mysql> โทร ReturnValueFrom_StoredProcedure(10,6,@TotalSum);+---------+| @valido |+---------+| NULL |+---------+1 แถวในชุด (0.00 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.01 วินาที)

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

mysql> เลือก @TotalSum;

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

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

ตอนนี้เรียกที่สองสำหรับความแตกต่างของสองค่า เรียกกระบวนงานที่เก็บไว้

mysql> โทร ReturnValueFrom_StoredProcedure(4,2,@TotalDiff);+---------+| @valido |+---------+| NULL |+---------+1 แถวในชุด (0.00 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.01 วินาที)

ตรวจสอบผลลัพธ์จากตัวแปรเฉพาะเซสชันที่ผู้ใช้กำหนดโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:

mysql> เลือก @TotalDiff;

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

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