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

ใช้การสืบค้น Dynamic SQL ภายในกระบวนงานที่เก็บไว้ MySQL หรือไม่


สำหรับเคียวรี SQL แบบไดนามิกในกระบวนงานที่เก็บไว้ ให้ใช้แนวคิดของ PREPARE STATEMENT ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable2033 -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT คีย์หลัก -> ชื่อ varchar(20) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.61 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable2033(ชื่อ) ('Chris'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.85 วินาที) mysql> แทรกลงในค่า DemoTable2033 (ชื่อ) ('Bob'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.19 วินาที) mysql> แทรกลงในค่า DemoTable2033 (ชื่อ) ('David'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงในค่า DemoTable2033 (ชื่อ) ('ไมค์'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.12 วินาที)

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 1 | คริส || 2 | บ๊อบ || 3 | เดวิด || 4 | Mike |+----+-------+4 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างกระบวนงานที่เก็บไว้และใช้ SQL แบบไดนามิก -

mysql> ตัวคั่น //mysql> สร้างโพรซีเดอร์ dynamic_query() -> start -> set @query=concat("select *from DemoTable2033 where Id=3"); -> เตรียม st จาก @query; -> ดำเนินการ st; -> end -> //Query OK, 0 แถวได้รับผลกระทบ (0.13 วินาที)mysql> delimiter;

เรียกขั้นตอนการจัดเก็บ −

mysql> โทร dynamic_query();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 3 | David |+---+-------+1 แถวในชุด (0.04 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.05 วินาที)