Heim > Datenbank > MySQL-Tutorial > Können wir eine Funktion mit der Callable-Anweisung aufrufen? Können Sie es anhand eines JDBC-Beispiels erklären?

Können wir eine Funktion mit der Callable-Anweisung aufrufen? Können Sie es anhand eines JDBC-Beispiels erklären?

WBOY
Freigeben: 2023-08-27 18:37:09
nach vorne
507 Leute haben es durchsucht

我们可以使用 Callable 语句调用函数吗?能用 JDBC 的例子解释一下吗?

Wie Prozeduren können Sie auch Funktionen in der Datenbank erstellen und speichern.

Syntax

Das Folgende ist die Syntax zum Erstellen einer Funktion in einer (MySQL-)Datenbank:

Syntax

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
Nach dem Login kopieren

Beispiel

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     |
+--------+------------+----------------+
Nach dem Login kopieren

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
Nach dem Login kopieren

Rufen Sie eine Funktion mit JDBC auf

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(?)}
Nach dem Login kopieren

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);
Nach dem Login kopieren

Verwenden Sie die Methode setString(), um den Wert auf den Eingabeparameter festzulegen. (Weil die Funktion getDoc() Werte vom Typ VARCHAR akzeptiert).

Beispiel

Das folgende JDBC-Programm führt die Funktion getDob aus und ruft das Ergebnis ab:

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));
   }
}
Nach dem Login kopieren

output

Connection established......
Date of birth: 1970-01-08
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage