Bonjour,

j'essaye de créer une procédure ou plutôt une fonction stockée sous PointBase. Voici les commandes que j'utilise dans la console PointBase:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE FUNCTION carre(IN valeur INT)
RETURNS BIGINT
LANGUAGE Java
NO SQL
EXTERNAL NAME \"SampleExternalMethods::carre\"
PARAMETER STYLE SQL;
Voici la classe SampleExternalMethods.java que j'utilise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class SampleExternalMethods {
 
	public long carre(int valeur)
	{
		long toto = valeur * valeur;
		return(toto);
	}
 
}
J'ai placé le .class dans le répertoire C:\Sun\AppServer\pointbase\lib, car j'ai vu que dans certains exemples, on y plaçait des .jar contenant des classes java.

Cependant, il me met une erreur:

SQL> Error Message: Expected to find "an identifier" instead found "\" at position 87.
SQL> Error SQLState: ZB005
SQL> Error Code: 10006
SQL>
Si j'enlève les "\", il me met cette erreur:

SQL>
SQL> Error Message: Cannot create Store Procedure CARRE. java.security.AccessControlException: access denied (com.pointbase.sp.spPermission SampleExternalMethods).
SQL> Error SQLState: ZG037
SQL> Error Code: 25037
SQL>
J'avoue ne pas avoir forcément bien saisi, comment faire le lien entre ma classe java et l'EXTERNAL NAME, en effet d'après ce que j'ai lu il faudrait un constructeur à cette classe qui établisse une java.sql.Connection, mais bon comme il n'y a pas d'exemples, difficile de se faire une idée.
Merci d'avance pour vos réponses.

Mumu27!