เช่นเดียวกับขั้นตอน คุณสามารถสร้างฟังก์ชันในฐานข้อมูลและจัดเก็บได้
ไวยากรณ์
ต่อไปนี้เป็นรูปแบบการสร้างฟังก์ชันในฐานข้อมูล a (MySQL):
สร้างฟังก์ชัน Function_Name(input_arguments) RETURNS output_parameterBEGIN ประกาศตัวแปร งบ. . . . . . . . . . ส่งคืน data_type; สิ้นสุด
ตัวอย่าง
สมมติว่าเรามีตารางชื่อ Emp ในฐานข้อมูลที่มีเนื้อหาดังต่อไปนี้:
<ก่อนหน้า>+---------+-----------+----------------+| ชื่อ | วันเกิด | ที่ตั้ง |+---------+-----------+----------------+| อามิต | 1970-01-08 | ไฮเดอราบัด || สุมิธ | 1970-01-08 | วิศาขาปัตตนัม || สุดา | 1970-01-05 | วิชัยวาทะ |+---------+-----------+----------------+ด้านล่างนี้เป็นตัวอย่างของการสร้างฟังก์ชัน ที่นี่ เรากำลังสร้างฟังก์ชันชื่อ getDob() ซึ่งรับชื่อพนักงาน ดึงและคืนค่าของคอลัมน์ DOB
CREATE FUNCTION getDob(emp_name VARCHAR(50)) RETURNS DATEBEGINประกาศ dateOfBirth DATE เลือก DOB เป็น dateOfBirth จาก EMP โดยที่ Name =emp_name;return dateOfBirth;END
การเรียกใช้ฟังก์ชันโดยใช้ JDBC
คุณสามารถเรียกใช้ฟังก์ชันโดยใช้ CallableStatement วัตถุเช่นเดียวกับกระบวนงานที่เก็บไว้ ในการเรียกใช้ฟังก์ชันโดยใช้โปรแกรม JDBC ที่คุณต้องทำ
-
เชื่อมต่อกับฐานข้อมูล
-
สร้าง PreparedStatement วัตถุและคอนสตรัคเตอร์ผ่านการเรียกใช้ฟังก์ชันในรูปแบบสตริง
-
ตั้งค่าเป็นตัวยึดตำแหน่ง
-
ดำเนินการคำสั่ง Callable
ต่อไปนี้เป็นแบบสอบถามเพื่อเรียกใช้ฟังก์ชันจาก JDBC:
<ก่อน>{? =โทร getDob(?)}ในขณะที่คุณสังเกตข้อความค้นหามีตัวยึดตำแหน่ง (?) เช่นเดียวกับคำสั่งที่เตรียมไว้และเรียกได้
ในแบบสอบถามข้างต้น ตัวยึดตำแหน่งแรกแสดงถึงค่าที่ส่งคืนของฟังก์ชัน และตัวยึดตำแหน่งที่สองแสดงถึงพารามิเตอร์อินพุต
คุณต้องลงทะเบียนตัวยึดตำแหน่งซึ่งแทนค่าที่ส่งคืน เป็นพารามิเตอร์เอาต์พุตโดยใช้ registerOutParameter() เมธอด (ของอินเทอร์เฟซ CallableStatement) ในวิธีนี้ คุณต้องส่งค่าจำนวนเต็มที่แทนตำแหน่งของตัวยึดตำแหน่งและตัวแปรจำนวนเต็มแทนประเภท sql (ของพารามิเตอร์)
cstmt.registerOutParameter(1, Types.DATE);
ตั้งค่าเป็นพารามิเตอร์อินพุตโดยใช้เมธอด setString() (เนื่องจากฟังก์ชัน getDoc() ยอมรับค่าประเภท VARCHAR)
ตัวอย่าง
การติดตามโปรแกรม JDBC จะเรียกใช้ฟังก์ชัน getDob และดึงผลลัพธ์:
<ก่อนหน้า> นำเข้า java.sql.CallableStatement นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.SQLException นำเข้า java.sql.Types คลาสสาธารณะ CallingFunctionsUsingCallable2 { St โมฆะ args สาธารณะหลัก ( ]) พ่น SQLException { //การลงทะเบียนไดรเวอร์ DriverManager.registerDriver (ใหม่ com.mysql.jdbc.Driver ()); //รับการเชื่อมต่อสตริง mysqlUrl ="jdbc:mysql://localhost/sampleDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //เตรียม CallableStatement CallableStatement cstmt =con.prepareCall("{? =โทร getDob(?)}"); cstmt.registerOutParameter (1, Types.DATE); cstmt.setString(2, "อามิต"); cstmt.execute(); System.out.print("วันเกิด:"+cstmt.getDate(1)); }}ผลลัพธ์
เชื่อมต่อแล้ว......วันเกิด:1970-01-08