Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

SQLCODE -305

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
SELLERON



Inscrit le: 21 Nov 2018
Messages: 8

MessagePosté le: Mer 21 Nov 2018, 11:09:06    Sujet du message: Répondre en citant

Bonjour,

J'ai créé le RPG PDFBLOB suivant :

D BLOBData S SQLTYPE(BLOB_LOCATOR)
D BLOBFile S SQLTYPE(BLOB_FILE)
* Paramètres en entrée
D pFileName S 255 Varying
* Paramètres en sortie
D pBLOBData S Like(BLOBdata)
* Les indicateurs de colonnes SQL de 1 a N (Autant que de colonnes) en entrée
D pFileNameInd S 5I 0
* Les indicateurs de colonnes SQL de 1 a N (Autant que de colonnes) en sortie
D pBLOBDataInd S 5I 0
* Parametres Echange SQL (Fixe)
D pSQLState S 5
D pFunctionName S 139
D pSpecificName S 128
D pMsgText S 70 Varying
*
C *entry plist
* Les paramètres en entrée
C parm pFileName
* Les paramètres en sortie
C parm pBLOBData
* Les indicateurs de colonnes SQL de 1 a N (Autant que de colonnes) en entrée
C parm pFileNameInd
* Les indicateurs de colonnes SQL de 1 a N (Autant que de colonnes) en sortie
C parm pBLOBDataInd
* Parametre Echange SQL (Fixe)
C parm pSQLState
C parm pFunctionName
C parm pSpecificName
C parm pMsgText

exec sql Set Option
Commit = *None;

BLOBfile_fo = SQFRD;
BLOBfile_name = pFileName;
BLOBfile_nl = %Len(pFileName);

exec sql
Set :BlobData=:BlobFile;

Select;
* Fichier non trouvé- Renvoie Null
When SQLSTT='428A1';
pBLOBDataInd=-1;
* Autre erreur
When SQLSTT<>'00000';
pSQLState=SQLSTT;
pMsgText=%Subst(SQLErM:1:SQLErL);
Other;
* OK - Renvoi de la donnée
pBLOBDataInd=*Zero;
pBLOBData=BLOBdata;
EndSl;

Return;

Et la fonction table ci-dessous :
CREATE FUNCTION PDFBLOB (
EXPFILE VARCHAR(255)
)
RETURNS BLOB AS LOCATOR
LANGUAGE RPGLE
PARAMETER STYLE SQL
EXTERNAL
READS SQL DATA
DETERMINISTIC
RETURNS NULL ON NULL INPUT

Lorsque j'exécute la fonction table depuis un requeteur SQL, elle fonctionne correctement.
VALUES PDFBLOB('/home/CSV/Fichier.pdf')
ou
SELECT PDFBLOB('/home/CSV/Fichier.pdf') FROM UnFichier

Mon problème est le suivant : lorsque je souhaite exécuter cette fonction table dans un RPG, j'ai les erreurs suivantes :
SQLCODE = -305 et SQLSTATE = 22002

Ctl-opt datfmt(*ymd) datedit(*ymd) actgrp(*caller);
D rfdocu s SQLTYPE(BLOB_LOCATOR)
D rfdocui s 5I 0
D rfreto s 1
D rfmess s 80
Dcl-s wwnpdf char(20);
Dcl-s wwcpdf char(100);
Dcl-s wwpdf char(120);
exec sql Set Option
Naming = *Sys,
//Commit = *None,
UsrPrf = *User,
DynUsrPrf = *User,
Datfmt = *iso,
CloSqlCsr = *EndMod;
wwpdf ='/home/CSV/Fichier.pdf';
Exec Sql
set :rfdocu = PDFBLOB(:wwpdf);
If %Subst(SqlState:1:2) >= '02';
rfreto = '7';
rfmess = 'Erreur lors de la génération du BLOB.';
EndIf;
*inlr = *on;
return;

Merci d'avance pour vos idées
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Adresse AIM
monthi



Inscrit le: 11 Sep 2018
Messages: 21

MessagePosté le: Mer 21 Nov 2018, 12:20:38    Sujet du message: (sujet inconnu) Répondre en citant

Bonjour

le SQLCODE 305 est : La variable indicateur doit être indiquée.


set :rfdocu:rfdocui = PDFBLOB(:wwpdf);

Cdlt
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
SELLERON



Inscrit le: 21 Nov 2018
Messages: 8

MessagePosté le: Ven 23 Nov 2018, 12:01:24    Sujet du message: (sujet inconnu) Répondre en citant

Merci pour votre réponse, le problème semble résolu.
Maintenant, j'ai une procédure stockée
CREATE PROCEDURE MaProc(
IN parm1 CHAR (3 ),
IN parm2 CHAR (2 ),
IN parm3 CHAR (2 ),
IN parm4 CHAR(9),
OUT parm5 BLOB ,
OUT parm6 CHAR (1 ),
OUT parm7 CHAR (80 ))
LANGUAGE RPGLE SPECIFIC MaProc
NOT DETERMINISTIC READS SQL
DATA CALLED ON NULL INPUT
EXTERNAL NAME MaProc
PARAMETER STYLE GENERAL

Si j'enlève le paramètre 5 (le BLOB), cela fonctionne correctement.
Par contre avec le BLOB impossible de faire fonctionner la procédure.

Avez-vous des préco pour appeler une procédure stockée qui aurait un paramètre retour de type BLOB?

Merci d'avance.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Adresse AIM
SELLERON



Inscrit le: 21 Nov 2018
Messages: 8

MessagePosté le: Ven 23 Nov 2018, 12:05:58    Sujet du message: (sujet inconnu) Répondre en citant

Petite précision, cette procédure stockée appelle un SQLRPGLE qui génére un pdf sur l'IFS et ensuite le met dans un BLOB avec le traitement à l'origine du sujet.
Le but de tout ça c'est d'appeler depuis une interface java (connection jdbc à l'as400) cette procédure stockée qui retournera le PDF dans le BLOB.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Adresse AIM
SELLERON



Inscrit le: 21 Nov 2018
Messages: 8

MessagePosté le: Ven 23 Nov 2018, 12:26:07    Sujet du message: (sujet inconnu) Répondre en citant

Voici le message lorsque j'exécute depuis le le requeteur d'Iséeries Navigator (dans mon cas je passe par ACS) :
[ Fri Nov 23 11:18:32 GMT 2018 ]  Exécution globale...  CALL GESD940010.PTRKCDE_06 ('POU', 'NI', 'AR', '007898348', null, null, null)  Etat SQL : 42926 Code fournisseur : -7034 Message : [SQL7034] Les pointeurs LOB et XML ne sont pas admis avec COMMIT(*NONE). Cause . . . . . : Les pointeurs LOB et XML ne peuvent pas être utilisés avec un contrôle de validation de niveau *NONE ou *NC. Que faire . . . : Utilisez un contrôle de validation de niveau *CHG, *UR, *CS, *ALL, *RS ou *RR.  L'instruction mise en évidence a échoué, entraînant l'interruption du traitement  Instructions ayant échoué : 1

Suite à ce message j'ai changer le paramétrage de ma connection JDC de "Pas de validation (*NC et *NONE)" en "lecture stable (*RS et *ALL)" et j'ai le message suivant :
[ Fri Nov 23 11:22:45 GMT 2018 ]  Exécution globale...  CALL GESD940010.PTRKCDE_06 ('POU', 'NI', 'AR', '007898348', null, null, null)  Etat SQL : 58004 Code fournisseur : -901 Message : [SQL0901] Erreur système SQL. Cause . . . . . : Une erreur système SQL est intervenue.  L'instruction SQL en cours ne peut s'exécuter avec succès.  Cette erreur n'empêchera pas cependant l'exécution des instructions suivantes. Il se peut que des messages précédents aient signalé un incident lié à cette instruction SQL et que SQL n'ait pas correctement diagnostiqué l'erreur. Les messages précédents indiquent peut-être qu'un incident s'est produit sur cette instruction SQL, mais que le diagnostic n'a pas été correctement effectué par SQL. L'ID message précédent est MCH0601. Une erreur interne de type 7018 s'est produite. S'il s'agit d'une précompilation, le traitement s'interrompra sur cette instruction. Que faire . . . : Consultez les messages précédents pour déterminer si un incident s'est produit sur cette instruction SQL. Pour consulter les messages, utilisez la commande DSPJOBLOG en mode interactif, ou la commande WRKJOB pour visualiser la sortie d'une précompilation.  Un programme d'application recevant ce code retour peut tenter de lancer de nouvelles instructions SQL. Corrigez les erreurs éventuelles et renouvelez votre demande.  L'instruction mise en évidence a échoué, entraînant l'interruption du traitement  Instructions ayant échoué : 1
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Adresse AIM
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots