Zope, Plone, ZcxOracleDA et les retours chariots Windows...
Les erreurs remontées par Oracle
DatabaseError: ORA-06550, ce qui signifie qu'il y a une erreur de compilation côté Oracle, or d'après de nombreuses vérifications, tous les packages, triggers, etc. sont bien compilés dans la base de données.
PLS-00103: Encountered the symbol "" when expecting one of the following, ce qui signifie qu'il y a une erreur de syntaxe PL/SQL quelque part, mais où ? laquelle ? Tout semble bon et l'exécution des requêtes incriminées via SQL+ ou l'onglet "Test" du connecteur ZcxOracle fonctionnent très bien.
La cause
Après de nombreux tests et debugs, un post de blog m'a mis sur la bonne piste : Oracle semble s'en sortir assez mal si le code d'une requête SQL contient des retours chariots Windows CRLF !
Et il s'avère que c'est le cas, mais pas pour toutes les requêtes, uniquement celles qui font appel à une procédure stockée, exemple de contenu d'une ZSQL Method :
BEGIN schema.package.procedure( param1, param2, param3); END;
Un patch rapide au niveau du connecteur ZcxOracleDA
Dans la méthode "query" de ZcxOracleDA/db.py, filtrer la requête SQL en remplaçant les caractères "CRLF" par leur équivalent Unix "LF".
qs = qs.replace("\r\n", "\n")
Et voilà !
La vrai correction
Si vous travaillez sous Windows, configurer votre éditeur de sorte qu'il n'utilise pas de caractères CRLF mais uniquement les caractères Unix LF.
Ou encore mieux : passer à Linux/Unix !