PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 28/10/2021 15:55:34

Mascaret
Membre

Pb en exécution : EXEC SQL SELECT retournant plusieurs enregistrements

Bonjour,

Nous souhaitons migrer une application d'un SGBD IngresSQL vers PostgreSQL.

Sous Ingres, nous utilisons du code du style :
EXEC SQL SELECT clicode, clinom
                INTO :cli.clicode, :cli.clinom
                FROM CLIENT ORDER BY CLICODE;
                printf("SELECT - sqlcode = %d sqlstate = %s\n", sqlca.sqlcode, sqlca.sqlstate);
                EXEC SQL BEGIN;
                printf("LOOP Client %d %s\n", cli.clicode, cli.clinom);
                EXEC SQL END;

Ce qui permet sans passer par un curseur d'effectuer du code après chaque enregistrement trouvé dans la requête.

Sous Postgre, la précompilation se passe bien, mais en exécution, après le select, on à l'erreur sqlcode -203 (ECPG_TOO_MANY_MATCHES) sqlstate 21000 (cardinality_violation).
Ce qui sous-entend visiblement que le select donne plusieurs enregistrements, ce qui ne serait pas permis.

Nous avons utilisé cette méthode dans de nombreux programmes et nous cherchons à effectuer un minimum de modifications si c'est possible

Est-ce que quelqu'un saurait comment palier à ce problème (sans passer par un curseur évidemment)

Merci à tous

Hors ligne

Pied de page des forums