Seperti prosedur, anda juga boleh mencipta fungsi dan menyimpannya dalam pangkalan data.
Berikut ialah sintaks untuk mencipta fungsi dalam pangkalan data (MySQL):
Berikut ialah sintaks untuk mencipta fungsi dalam pangkalan data (MySQL): p>
CREATE FUNCTION Function_Name(input_arguments) RETURNS output_parameter BEGIN declare variables; statements . . . . . . . . . . return data_type; END
, yang kandungannya adalah seperti berikut: +--------+------------+----------------+
| Name | DOB | Location |
+--------+------------+----------------+
| Amit | 1970-01-08 | Hyderabad |
| Sumith | 1970-01-08 | Vishakhapatnam |
| Sudha | 1970-01-05 | Vijayawada |
+--------+------------+----------------+
yang menerima nama pekerja, mendapatkan semula dan mengembalikan nilai lajur DOB. CREATE FUNCTION getDob(emp_name VARCHAR(50)) RETURNS DATE
BEGIN
declare dateOfBirth DATE;
select DOB into dateOfBirth from EMP where Name = emp_name;
return dateOfBirth;
END
sama seperti prosedur tersimpan untuk memanggil fungsi menggunakan program JDBC yang anda perlukan.
dan hantar pembinanya untuk memanggil fungsi dalam format rentetan.
{? = call getDob(?)}
Seperti yang anda boleh perhatikan, pertanyaan itu mengandungi ruang letak (?), sama seperti pernyataan yang disediakan dan pernyataan boleh dipanggil.
Dalam pertanyaan di atas, pemegang tempat pertama mewakili nilai pulangan fungsi, dan pemegang tempat kedua mewakili input
Anda perlu menggunakan kaedah
registerOutParameter() antara muka CallableStatement untuk meletakkan pemegang tempat mewakili nilai pulangan Didaftarkan sebagai parameter output. Untuk kaedah ini, anda perlu menghantar nilai integer yang mewakili kedudukan pemegang tempat dan pembolehubah integer yang mewakili jenis sql (parameter) cstmt.registerOutParameter(1, Types.DATE);
Contoh
dan mendapatkan semula hasilnya: import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class CallingFunctionsUsingCallable2 {
public static void main(String args[]) throws SQLException {
//Registering the Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//Getting the connection
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Connection established......");
//Preparing a CallableStatement
CallableStatement cstmt = con.prepareCall("{? = call getDob(?)}");
cstmt.registerOutParameter(1, Types.DATE);
cstmt.setString(2, "Amit");
cstmt.execute();
System.out.print("Date of birth: "+cstmt.getDate(1));
}
}
Connection established...... Date of birth: 1970-01-08
Atas ialah kandungan terperinci Bolehkah kita memanggil fungsi menggunakan pernyataan Boleh Dipanggil? Bolehkah anda menerangkannya menggunakan contoh JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!