So rufen Sie eine gespeicherte Prozedur im Ruhezustand auf

So rufen Sie eine gespeicherte Prozedur im Ruhezustand auf

In diesem Lernprogramm erfahren Sie, wie Sie eine Speicherprozedur im Ruhezustand aufrufen.

MySQL-Speicherprozedur

Hier ist eine MySQL-Speicherprozedur, die einen Bestandscode-Parameter akzeptiert und die zugehörigen Bestandsdaten zurückgibt.

DELIMITER $$

CREATE PROCEDURE `GetStocks`(int_stockcode varchar(20))
BEGIN
   SELECT * FROM stock where stock_code = int_stockcode;
   END $$

DELIMITER ;

In MySQL können Sie es einfach mit dem Schlüsselwortcallaufrufen:

CALL GetStocks('7277');

Anrufspeicherprozedur im Ruhezustand

Im Ruhezustand gibt es drei Ansätze zum Aufrufen einer Datenbankspeicherprozedur.

1. Native SQL - createSQLQuery

MitcreateSQLQuery() können Sie eine Speicherprozedur direkt aufrufen.

Query query = session.createSQLQuery(
    "CALL GetStocks(:stockCode)")
    .addEntity(Stock.class)
    .setParameter("stockCode", "7277");

List result = query.list();
for(int i=0; i

2. NamedNativeQuery in Annotation

Deklarieren Sie Ihre Speicherprozedur innerhalb der Annotation@NamedNativeQueries.

//Stock.java
...
@NamedNativeQueries({
    @NamedNativeQuery(
    name = "callStockStoreProcedure",
    query = "CALL GetStocks(:stockCode)",
    resultClass = Stock.class
    )
})
@Entity
@Table(name = "stock")
public class Stock implements java.io.Serializable {
...

Nenne es mitgetNamedQuery().

Query query = session.getNamedQuery("callStockStoreProcedure")
    .setParameter("stockCode", "7277");
List result = query.list();
for(int i=0; i

3. SQL-Abfrage in XML-Mapping-Datei

Deklarieren Sie Ihre Speicherprozedur innerhalb des Tags "sql-query".


...

    
        
            
            
        
        
            
        
        ...
    

    
    
    
    

Nenne es mitgetNamedQuery().

Query query = session.getNamedQuery("callStockStoreProcedure")
    .setParameter("stockCode", "7277");
List result = query.list();
for(int i=0; i

Fazit

Die oben genannten drei Ansätze machen dasselbe: Rufen Sie eine Speicherprozedur in der Datenbank auf. Es gibt keine großen Unterschiede zwischen den drei Ansätzen. Welche Methode Sie wählen, hängt von Ihren persönlichen Vorlieben ab.