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.