marți, 18 noiembrie 2008

Oracle si Proceduri Stocate Java

Incepand cu versiunea Oracle 8i serverul de baze de date contine o masina virtuala nativa. Acest lucrul inseamna ca se pot stoca proceduri/programe scrise in java direct in baza de date. Acest lucru este util daca doriti sa adaugati functionalitati noi serverului. In cele ce urmeaza vom crea o clasa simpla care va contine o metoda cu un parametru de tip java.lang.String. Aceasta metoda va reprezenta de fapt procedura stocata.

Presupun ca se foloseste ca mediu de dezvoltare eclipse. Creati un proiect de tip "Java project". Adaugati ca referinta ojdbc14.jar(driver-ul jdbc pentru Oracle). In acest moment suntem gata sa adaugam clasa dorita.

package ro.teste.sp;

public class TesteSP
{
public static void WriteMessage(String msg) throws SQLException
{
Connection con = DriverManager.getConnection("jdbc:default:connection");

System.out.println("S-a transmis din PL/SQL: " + msg);
}
}


Pasul 2: se incarca clasa in baza de date

loadjava -user user/passwd@db TesteSP.java

Pasul 3: se creaza un wrapper in baza de date.

CREATE OR REPLACE PROCEDURE WrapJava1(msg VARCHAR2)
AS
LANGUAGE java
NAME 'ro.teste.sp.TesteSP.WriteMessage(java.lang.String)';

Pasul 4: executam procedura creata

CALL WrapJava1('Salutari');

Acest exemplu este unul extrem de simplu. Puteti crea exemple mai complicate. De exemplu, poate dorit sa generati o imagine pe baza unui anumite inregistrari. Sper ca veti gasi multe aplicatii pentru aceasta facilitate oferita de Oracle.

Observatii: Ar trebui sa observati un mod ciudat de obtinere a unei conexiuni la baza de date. Desi in acest exemplu, conexiune obtinuta nu este folosita este de retinut acest mod de conectare. Intrucat, metoda ruleaza in interiorul bazei de date, jdbc:default:connection ofera conexiunea curenta metodei.

Daca va placut acest articol sau daca il gasiti util nu ezitati sa adaugati un comentariu.

Cosnita Radu Viorel!

Niciun comentariu:

Trimiteți un comentariu