In plaats van een vraag te stellen heb ik hier wat informatie over hoe je een Java stored function maakt (in Oracle minimaal versie 8.1.5 nodig, zelf uitgeprobeerd op 8.1.7).
Stap een :
Maak een java bestandje bijvoorbeeld :
Compileer deze met de normale JDK van bijvoorbeeld Sun.
Maak op je HD ergens een map aan waar je wilt dat Oracle deze bestanden kan vinden bijvoorbeeld :
C:\ORACLEPROC'
Gan naar sql-Plus en doe de volgende commando's :
1:
CREATE OR REPLACE DIRECTORY JAVADIR AS 'C:\ORACLEPROC';
2:
CREATE OR REPLACE JAVA CLASS USING BFILE (JAVADIR, 'Groetjes.class');
/
Hiervoor moet het bestand reeds in de C:\ORACLEPROC geplaatst zijn.
3:
CREATE OR REPLACE FUNCTION GROETEN RETURN VARCHAR2
IS LANGUAGE JAVA
NAME 'Groetjes.hallo () return java.lang.String';
/
Hiermee zorg je ervoor dat via SQL de functie ook bekend is, de java.lang.String is de return waarde van de java proc.
De method hallo() is de method die aangesproken moet worden als men de functie GROETEN gaat gebruiken.
nu is de proc in de database aangemaakt, als je hem wilt aanroepen doe je dat als volgt :
1 variable tekst varchar2(20);
deze maakt een tijdelijke variabele aan.
2 call GROETEN() into :tekst;
Deze voert de functie uit en zet de return waar in de net aangemaakt tijdelijke variabele. Dit gaat de eerste keer wat traag maar de daarop volgende keren vrij snel. Dit komt omdat Oracle de procedure eerst een keer moet uitvoeren wil hij weten wat er gebeurt denk ik.
3 print :tekst
Hiermee druk je de waarde af die in de variabele 'tekst' staat.
en ziedaar de output van de method hallo.
Stap een :
Maak een java bestandje bijvoorbeeld :
code:
1
2
3
4
5
| public class Groetjes {
public static String hallo() {
return "Hallo leerdam";
}
} |
Compileer deze met de normale JDK van bijvoorbeeld Sun.
Maak op je HD ergens een map aan waar je wilt dat Oracle deze bestanden kan vinden bijvoorbeeld :
C:\ORACLEPROC'
Gan naar sql-Plus en doe de volgende commando's :
1:
CREATE OR REPLACE DIRECTORY JAVADIR AS 'C:\ORACLEPROC';
2:
CREATE OR REPLACE JAVA CLASS USING BFILE (JAVADIR, 'Groetjes.class');
/
Hiervoor moet het bestand reeds in de C:\ORACLEPROC geplaatst zijn.
3:
CREATE OR REPLACE FUNCTION GROETEN RETURN VARCHAR2
IS LANGUAGE JAVA
NAME 'Groetjes.hallo () return java.lang.String';
/
Hiermee zorg je ervoor dat via SQL de functie ook bekend is, de java.lang.String is de return waarde van de java proc.
De method hallo() is de method die aangesproken moet worden als men de functie GROETEN gaat gebruiken.
nu is de proc in de database aangemaakt, als je hem wilt aanroepen doe je dat als volgt :
1 variable tekst varchar2(20);
deze maakt een tijdelijke variabele aan.
2 call GROETEN() into :tekst;
Deze voert de functie uit en zet de return waar in de net aangemaakt tijdelijke variabele. Dit gaat de eerste keer wat traag maar de daarop volgende keren vrij snel. Dit komt omdat Oracle de procedure eerst een keer moet uitvoeren wil hij weten wat er gebeurt denk ik.
3 print :tekst
Hiermee druk je de waarde af die in de variabele 'tekst' staat.
en ziedaar de output van de method hallo.
3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line