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 17/08/2010 11:18:02

Tinaby
Membre

[Oracle -> Postgres]Equivalent "DEFINE"

Bonjour,

étant en cours de migration depuis une base Oracle, certains scripts possèdent des lignes telles que :

define var1 = value1;
define var2 = value2;
...


Y a-t-il un équivalent avec Postgres ? J'ai pu voir les EXEC SQL DEFINE pour le SQL embarqué, mais je n'ai aps vraiment l'impression que l'utilisation soit la même (dans les scripts, les define sont utilisés directement au niveau de la base et utilisés ensuite dans des requêtes, le tout n'étant pas embarqué pour deux sous et faisant partie de la création de la base).

Pour être précis, j'ai un fichier contenant un grand nombre de "define", le dit fichier étant "inclut" (en fait, exécuté via "START fichier_def.sql") au début de la plupart des scripts.

Merci d'avance.

Hors ligne

#2 17/08/2010 11:55:48

gleu
Administrateur

Re : [Oracle -> Postgres]Equivalent "DEFINE"

Ça n'existe pas vraiment pour PostgreSQL. L'outil psql vous permet de faire l'équivalent avec la méta-commande \set. Voir http://docs.postgresql.fr/8.4/app-psql. … -variables pour les détails. Par contre, cela ne fonctionnera qu'avec psql.


Guillaume.

Hors ligne

#3 17/08/2010 13:30:52

Tinaby
Membre

Re : [Oracle -> Postgres]Equivalent "DEFINE"

Je pense que ça corresponds bien avec ce que je cherchais.

Merci beaucoup !

Hors ligne

#4 19/08/2010 15:13:38

Tinaby
Membre

Re : [Oracle -> Postgres]Equivalent "DEFINE"

Bonjour,

toujours dans le même esprit (j'ai préféré ne pas refaire un topic), y a-t-il un équivalent à "WHENEVER" ?

Par exemple : "WHENEVER SQLERROR CONTINUE;" ou "WHENEVER SQLERROR EXIT SQL.SQLCODE;". J'ai trouvé dans la doc encore une fois du SQL embarqué, mais pas de fonctionnalité directe au niveau de psql.

J'ai cru comprendre que le comportement de base était celui de l'exemple que je viens de cité et qu'on pouvait utiliser "ON_ERROR_STOP" ou "ON_ERROR_ROLLBACK" pour le modifier, mais j'aimerais être sur que c'est bien de la même chose qu'il s'agit.

Cordialement,
Tinaby

Dernière modification par Tinaby (19/08/2010 15:50:44)

Hors ligne

#5 19/08/2010 15:43:54

gleu
Administrateur

Re : [Oracle -> Postgres]Equivalent "DEFINE"

Par défaut, si une requête est en erreur, cette requête n'a aucun effet dans la base mais l'exécution du script se poursuit. Si la requête en erreur se trouvait dans une transaction explicite, toute la transaction est annulée, y compris toutes les requêtes suivantes jusqu'au prochain ROLLBACK ou COMMIT (ce dernier fera l'équivalent du ROLLBACK étant donné que la transaction est en erreur).

ON_ERROR_STOP ne sert que pour l'exécution de scripts. Si ON_ERROR_STOP est à on, l'exécution du script est arrêtée dès la première requête erronée. La gestion de la transaction n'est pas impactée.

ON_ERROR_ROLLBACK permet de ne pas annuler une transaction complète si une requête est erronée. Seule la requête en erreur est annulée. Cela ne fonctionne que si ON_ERROR_ROLLBACK vaut interactive (si on veut que seules les sessions interactives soient concernées) ou on (dans ce cas, les scripts seront eux-aussi concernés).

Attention, tout ça n'est vrai qu'avec psql. Ces deux paramètres ne sont pas connus des autres outils.


Guillaume.

Hors ligne

#6 19/08/2010 15:50:33

Tinaby
Membre

Re : [Oracle -> Postgres]Equivalent "DEFINE"

Ok, c'est bien ce qu'il m'avait semblé. Merci beaucoup !

Hors ligne

#7 20/08/2010 10:16:30

Tinaby
Membre

Re : [Oracle -> Postgres]Equivalent "DEFINE"

Allez, une troisième pour la route.

Y a-t-il un équivalent à "SPOOL" (écriture des résultats de la requête dans un fichier) ? Je n'ai rien vu qui ressemble en parcourant les titres de la doc et une recherche n'a rien donné du tout cette fois :'(

Hors ligne

#8 20/08/2010 11:35:44

gleu
Administrateur

Re : [Oracle -> Postgres]Equivalent "DEFINE"

\o nom_du_fichier

toujours uniquement sur psql


Guillaume.

Hors ligne

Pied de page des forums