H2 veritabanını kullanarak saklanan prosedürleri oluşturmak isteyen var mı?H2 veritabanını kullanarak saklı yordam nasıl oluşturulur?
cevap
Bir Java işlevindeki veritabanına erişmek için bir bağlantıya ihtiyacınız vardır.
Çözüm 1: H2 için, böyle bir bağlantı elde etmek için iki yol vardır Java işlevi ilk parametre sonra veritabanı bağlantısı sağlayan bir java.sql.Connection
ise. SQL için bu, 'gizli' bir parametredir, yani bunu yapamazsınız ve bunu açıkça ayarlamanıza gerek yoktur. Bu belgelenmiştir: User-Defined Functions and Stored Procedures, "Bağlantı Gerektiren İşlevler". Örnek: Apache Derby ve Oracle ile uyumluluk için Sen DriverManager.getConnection("jdbc:default:connection")
kullanarak Java fonksiyonu içinde yeni bir bağlantı açabilirsiniz: 2
CREATE ALIAS QUERY AS $$
ResultSet query(Connection conn, String sql) throws SQLException {
return conn.createStatement().executeQuery(sql);
} $$;
CALL QUERY('SELECT * FROM DUAL');
Çözüm. Bu özellik H2 sürüm 1.3.151 ve daha yeni sürümlerde mevcuttur ve varsayılan olarak devre dışıdır. Bunu etkinleştirmek için ;DEFAULT_CONNECTION=TRUE
to the database URL'u ekleyin. Sorunlu bir özellik çünkü Oracle JDBC sürücüsü, H2 sürücüsünden önce yüklüyse bu veritabanı URL'sini çözümlemeye çalışacaktır. Temel olarak, Oracle sürücüsü yüklüyse, özelliği kullanamazsınız (Bunu, Oracle sürücüsünde bir hata olarak görüyorum).
Onlarla bittiğinde ifadelerinizi her zaman kapatın ... Açıklama s = conn.createStatement(); {return s.executeQuery (sql);} nihayet {s.close();} – jcalfee314
H2 için (ve bu H2 ile ilgilidir) kapatıp kapatmamanız önemli değil ifade ya da değil. Ancak evet, genellikle ifade kapatılmalıdır. –
@Thomas Mueller dökümantasyon örnekleriniz çok fakir bir CRUD örneği koyarsanız – Dunken
- 1. Azure Automation kullanarak saklı yordam nasıl çalıştırılır?
- 2. H2 veritabanını kullanarak Spring MVC uygulaması
- 3. saklı yordam çağrıları
- 4. Saklı yordam sonuçlarını sayma
- 5. Saklı yordam değiştirilmiş süre
- 6. Saklı yordam Sil
- 7. bir saklı yordam
- 8. saklı yordam döndürür varchar
- 9. PhpMyAdmin'de saklı yordam nasıl listelenir/görüntüle
- 10. nasıl Genellikle kullanarak planlarını açıklamak oluşturmak tamamı saklı yordam
- 11. SQL Server 2008'de saklı bir prosedürde saklı yordam nasıl oluşturulur
- 12. Veritabanı saklı bir yordam aracılığıyla Oracle saklı yordamı nasıl yürütülür
- 13. Saklı yordam ve MySQL Değişkeni
- 14. SQL Server: koşul saklı yordam
- 15. Azure - Saklı yordam bulunamadı 'dbo.aspnet_CheckSchemaVersion'
- 16. SQL saklı yordam geçen parametre
- 17. Ayrılmış bir şemada saklı yordam nasıl çalıştırılır
- 18. Mysql saklı yordam çıktısı nasıl bastırılır?
- 19. Saklı Yordam Nasıl Kullanılır Excepting kullanıcısı MySQL
- 20. Saklı yordamda yeni bir kılavuz nasıl oluşturulur?
- 21. H2 veritabanını kapatma; Kompakt vs Defrag?
- 22. Sql: saklı yordam için tablonun sütun değerini parametre olarak kullanarak
- 23. SQL fakir saklı yordam yürütme planı performans -
- 24. Zarif Çağrı saklı yordam ve sınıf
- 25. Periyodik olarak Embedded H2 veritabanını sıfırlayın
- 26. C# birim sınama, saklı yordam yordamı
- 27. Varlık Çerçevesi ile saklı yordam verileri alma
- 28. Saklı Yordam Prosedürünü Oracle SQL Developer'dan Yürütme
- 29. MySQL SELECT deyimlerinin saklı yordam değişkenleri
- 30. bir saklı yordam aracılığıyla listesi "nden"
Java işlevlerini kullanmayla ilgili sorunum, [bu birinden] farklıdır (http://stackoverflow.com/questions/3098905/how-to-create-stored-procedure-using-h2-database). Böyle bir fonksiyonda tablolara nasıl erişeceğimi bilmiyorum (bağlantı oluşturmak hiç mantıklı değil, değil mi)? – maaartinus
Her zaman kılavuza bakmaya yardımcı olur: [H2: Kullanıcı Tanımlı İşlevler ve Saklı Prosedürler] (http://www.h2database.com/html/features.html#user_defined_functions) – NullUserException