Wie Prozeduren können Sie auch Funktionen in der Datenbank erstellen und speichern.
Das Folgende ist die Syntax zum Erstellen einer Funktion in einer (MySQL-)Datenbank:
Das Folgende ist die Syntax zum Erstellen einer Funktion in einer (MySQL-)Datenbank: p>
CREATE FUNCTION Function_Name(input_arguments) RETURNS output_parameter BEGIN declare variables; statements . . . . . . . . . . return data_type; END
Angenommen, da ist eine Datenbank mit dem Namen Emps Tabelle mit folgendem Inhalt:
+--------+------------+----------------+ | Name | DOB | Location | +--------+------------+----------------+ | Amit | 1970-01-08 | Hyderabad | | Sumith | 1970-01-08 | Vishakhapatnam | | Sudha | 1970-01-05 | Vijayawada | +--------+------------+----------------+
Ein Beispiel für die Erstellung einer Funktion finden Sie unten. Hier erstellen wir eine Funktion namens getDob(), die den Namen des Mitarbeiters akzeptiert, den Wert der DOB-Spalte abruft und zurückgibt.
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
Sie können eine Funktion mit einem CallableStatement-Objekt aufrufen, genau wie eine gespeicherte Prozedur, um eine Funktion mit dem benötigten JDBC-Programm aufzurufen.
Verbinden Sie sich mit der Datenbank.
Erstellen Sie ein PreparedStatement-Objekt und übergeben Sie seinen Konstruktor, um die Funktion im String-Format aufzurufen.
Legen Sie den Wert als Platzhalter fest.
Führen Sie die Callable-Anweisung aus.
Das Folgende ist die Abfrage, die die Funktion von JDBC aus aufruft:
{? = call getDob(?)}
Wie Sie sehen können, enthält die Abfrage Platzhalter (?), genau wie vorbereitete Anweisungen und aufrufbare Anweisungen.
In der obigen Abfrage stellt der erste Platzhalter den Rückgabewert der Funktion und der zweite Platzhalter die Eingabe dar.
Sie müssen die Methode registerOutParameter() der CallableStatement-Schnittstelle verwenden, um den Platzhalter zu platzieren, der den Rückgabewert darstellt Als Ausgabeparameter registriert. Für diese Methode müssen Sie einen ganzzahligen Wert übergeben, der die Platzhalterposition darstellt, und eine ganzzahlige Variable, die den SQL-Typ (des Parameters) darstellt.
cstmt.registerOutParameter(1, Types.DATE);
Verwenden Sie die Methode setString(), um den Wert auf den Eingabeparameter festzulegen. (Weil die Funktion getDoc() Werte vom Typ VARCHAR akzeptiert).
Das folgende JDBC-Programm führt die Funktion getDob aus und ruft das Ergebnis ab: p>
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
Das obige ist der detaillierte Inhalt vonKönnen wir eine Funktion mit der Callable-Anweisung aufrufen? Können Sie es anhand eines JDBC-Beispiels erklären?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!