De la “ORA-03115: réseau non pris en charge le type de données ou de la représentation” erreur lors de l'extraction de tableau de type varchar anonymes pl/sql
Je suis "ORA-03115: réseau non pris en charge le type de données ou de la représentation" exception lors de l'extraction de l'varray de type de anonyme PL/SQL bloc.
mon code est:
Connection con = null;
CallableStatement cstmt = null;
ResultSet rs = null;
String dequeueQuery = "DECLARE " +
" type namesarray IS VARRAY(5) OF VARCHAR2(10); " +
" names namesarray;" +
" total integer;" +
" BEGIN " +
" names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); " +
" ? := names;"+
" END;";
try{
con = getConnection();
con.setAutoCommit(false);
cstmt =(OracleCallableStatement )con.prepareCall(dequeueQuery);
cstmt.registerOutParameter(1, OracleTypes.ARRAY);
boolean b = cstmt.execute();
Array arr = cstmt.getArray(1);
String[] recievedArray = (String[]) arr.getArray();
for (int i = 0; i < recievedArray.length; i++)
System.out.println(recievedArray[i]);
con.commit();
}catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}`
S'il vous plaît aider moi. Je vous remercie à l'avance.
Vous devez vous connecter pour publier un commentaire.
Ceci est causé par la déclaration suivante:
Cette déclaration affirme tableau sera la sortie, mais ne spécifie pas le réel Oracle Type de nom comme troisième paramètre. Vous pouvez le vérifier Oracle Doc pour plus d'informations sur cette.
L'on peut fixer l'exception "
java.sql.SQLException: ORA-03115: unsupported network datatype or representation
" par l'ajout d'un troisième paramètre réel, Oracle nom de Type. Dans votre cas, il estNAMESARRAY
.Mais la déclaration ci-dessus va lancer suivant exception lors de l'exécution:
C'est parce que nous n'avons pas déclaré le type
NAMESARRAY
à l'intérieur de DB. L'exception ci-dessus indique à l'utilisateur que SCOTT, mais vous pouvez vous connecter à l'utilisateur de votre choix et de créer des type.De la création de texte en DB:
Une fois que nous à créer le type
NAMESARRAY
, si nous exécutons votre code sans changer, nous allons frapper le message d'erreur suivant:Cette erreur est parce que nous avons déjà défini le type au niveau de l'utilisateur, mais nous essayons de créer le type de nouveau à l'intérieur du bloc de code suivant:
Donc, nous avons besoin de retirer la déclaration de type de celle.
Après le retirer si nous exécutons le programme après la compilation, nous devrions être en mesure de voir la sortie suivante:
Suivant est le programme mis à jour:
type
un utilisateur nécessiteresource
privilège. Si l'utilisateur dispose déjà d'resource
privilège, puis de créer le type une fois de résoudre tous vos problèmes. Si tout ce qui vient à l'esprit, je vais certainement partager. Bonne chance.Je pense que vous êtes en utilisant ojdbc14.jar
Essayer une fois avec ojbc6.jar et cela devrait fonctionner.