bonjour;

en java comme j'ai un nombre conséquent de données à passer à ma procédure SQL oracle j'ai décider de passer un objet en paramètre.

voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
			ps = this.prepareCall("{call INSERT_SAA_EVT_OBJ (?)}");
 
			// Create an oracle.sql.STRUCT object to hold the values 
			Object[] object1Values = new Object[]{"ooo"  ,   new Integer(2)};
			StructDescriptor structDesc =
				StructDescriptor.createDescriptor("COMPTE_RENDU_EVT_SAA_OBJ", ps.getConnection());
			STRUCT object1 =
				new STRUCT(structDesc, ps.getConnection(), object1Values);
 
			// Set the values to insert
			ps.setObject(1, object1);
			ps.executeUpdate();
au niveau de ma base oracle j'ai créé mon type COMPTE_RENDU_EVT_SAA_OBJ

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
CREATE OR REPLACE TYPE COMPTE_RENDU_EVT_SAA_OBJ AS OBJECT
(
IDENTIFIANT_UNIQUE_TRANSACTION VARCHAR2(15)  NULL,
CODE_EVENEMENT NUMBER(2) NULL)
J'ai créé un synonym public sur cet objet (créé dans un compte utilisateur) déclaré des GRANT EXECUTE également.

la ligne du createDescriptor me génère l'execption:
java.sql.SQLException: Type non déterminé: get_next_type

des idées car une recherche sur google n'a rien donnée !!

(je viens de regarder si je voyais sous sqltools mon type avec l'utilisateur java et non !! c'est donc ca mais je ne comprend pas)