Qualcuno ha provato a creare stored procedure utilizzando il database H2?Come creare stored procedure usando il database H2?
risposta
Per accedere al database all'interno di una funzione Java, è necessaria una connessione. Per H2, ci sono due modi per ottenere una tale connessione:
Soluzione 1: Se il primo parametro della funzione Java è un java.sql.Connection
, quindi il database fornisce la connessione. Per SQL, questo è un parametro 'nascosto', il che significa che non puoi e non devi impostarlo esplicitamente. Questo è documentato: User-Defined Functions and Stored Procedures, "Funzioni che richiedono una connessione". Esempio:
CREATE ALIAS QUERY AS $$
ResultSet query(Connection conn, String sql) throws SQLException {
return conn.createStatement().executeQuery(sql);
} $$;
CALL QUERY('SELECT * FROM DUAL');
Soluzione 2: Per la compatibilità con Apache Derby e Oracle, è possibile aprire una nuova connessione all'interno della funzione Java utilizzando DriverManager.getConnection("jdbc:default:connection")
. Questa funzione è disponibile in H2 versione 1.3.151 e successive e viene disabilitata per impostazione predefinita. Per abilitarlo, aggiungi ;DEFAULT_CONNECTION=TRUE
to the database URL. È una funzionalità problematica poiché il driver JDBC Oracle tenterà di risolvere questo URL del database se è stato caricato prima del driver H2. Quindi in pratica non è possibile utilizzare la funzione se il driver Oracle è caricato (lo considero un bug nel driver Oracle).
chiudi sempre le tue dichiarazioni quando hai finito con loro ... Statement s = conn.createStatement(); try {return s.executeQuery (sql);} finally {s.close();} – jcalfee314
Per H2 (e questo è su H2) non importa se chiudi la dichiarazione o no. Ma sì, generalmente la dichiarazione dovrebbe essere chiusa. –
@Thomas Mueller i tuoi esempi di documentazione sono così poveri potresti mettere un esempio CRUD – Dunken
- 1. Stored procedure nel database H2
- 2. Come CREARE PROCEDURA in H2
- 3. Aggiornamento stored procedure su più database
- 4. Usa database all'interno di una stored procedure
- 5. Creare stored procedure in MS Access?
- 6. come trasferire stored procedure tra database di SQL Server 2005
- 7. Creare stored procedure con PDO in PHP
- 8. Creare interi DataSet dalla stored procedure esistente
- 9. Come pianificare una stored procedure?
- 10. Come chiamare una stored procedure da un'altra stored procedure?
- 11. Stored procedure vs nessuna stored procedure - Security Viewpoint
- 12. Autorizzazioni stored procedure MySQL
- 13. Modelli per stored procedure?
- 14. SQL Server: migrazione stored procedure tra database, istanze
- 15. Equivalente Stored procedure MongoDB
- 16. Chiamata stored procedure in codeigniter
- 17. Passing Table Parametro valido per stored procedure su database diversi
- 18. Creazione di stored procedure con SQLAlchemy
- 19. T-SQL Come creare tabelle dinamicamente nelle stored procedure?
- 20. Come posso creare un indice all'interno di una stored procedure?
- 21. Come conoscere Aggiornamento stored procedure TSQL eseguito
- 22. Come creare procedure In diversi database con il cursore
- 23. Heroku con database H2
- 24. Dovrei usare un ORM se sto usando le stored procedure?
- 25. DocumentDB chiamata stored procedure da un'altra stored procedure o stessa
- 26. Come/quando mysql compila le stored procedure?
- 27. Chiamare una stored procedure in una stored procedure in MySQL
- 28. stored procedure e aggiornamento EDMX
- 29. Chiamata alla stored procedure VBA
- 30. Differenza tra stored procedure e stored procedure estese
Il mio problema con l'utilizzo delle funzioni Java è diverso da [questo] (http://stackoverflow.com/questions/3098905/how-to-create-stored-procedure-using-h2-database). Non so come accedere alle tabelle in tale funzione (la creazione di una connessione non ha senso lì, lo fa)? – maaartinus
Aiuta sempre a consultare il manuale: [H2: Funzioni definite dall'utente e stored procedure] (http://www.h2database.com/html/features.html#user_defined_functions) – NullUserException