PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Migration Oracle postgres pl/pgsql avec CURSOR et %ROWTYPE

Technique - Langages Procéduraux (PL) | Migration Oracle postgres pl/pgsql avec CURSOR et %ROWTYPE

Par maouth le 21/06/2006 - 17:19

bonjour,

je suis teste actuellement la faisabilité pour une migration d'une base Oracle
je n'arrive pas a me depatouiller actuellement sur le point de code suivant :
le probleme doit venir de : enregDonnees_Quot Curs1_Quot%ROWTYPE;
car il est utilise Curs1_Quot dans la declaration
mais je suis pas arrivé a l'initier apres la declaration .
je precise que le code oracle marche
merci d'avance pour votre aide.

Oracle :
CREATE OR REPLACE PROCEDURE Calcul_Exxxm
IS
CURSOR Curs1_Quot IS
SELECT * FROM DONNEES_QUOT WHERE RG IS NOT NULL;
--Déclaration d'un enregistrement
enregDonnees_Quot Curs1_Quot%ROWTYPE;
BEGIN
--Lecture de tous les enregistrements
OPEN Curs1_Quot;
LOOP
FETCH Curs1_Quot INTO enregDonnees_Quot;
EXIT WHEN Curs1_Quot%NOTFOUND;-- Fin de liste: on sort
-- lancer fonction
Calcul_Exxxt_Jour(enregDonnees_Quot.dat);
END LOOP;
CLOSE Curs1_Quot;
END Calcul_Exxxm;
/

mon code PL/PGSQL :
CREATE OR REPLACE FONCTION Calcul_Exxxm RETURNS void
AS $$
DECLARE
Curs1_Quot CURSOR FOR
SELECT * FROM DONNEES_QUOT WHERE RG IS NOT NULL;
--Déclaration d'un enregistrement de Curs_Donnees_Quot
enregDonnees_Quot Curs1_Quot%ROWTYPE;
BEGIN
--Lecture de tous les enregistrements
OPEN Curs1_Quot;
LOOP
FETCH Curs1_Quot INTO enregDonnees_Quot;
EXIT WHEN Curs1_Quot%NOTFOUND;-- Fin de liste: on sort
-- lancer fonction
Calcul_Exxxt_Jour(enregDonnees_Quot.dat);
END LOOP;
CLOSE Curs_Donnees_Quot;
END ;
$$ LANGUAGE 'plpgsql';

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Déclaration du curseur

SAS/ = 23 Juin, 2006 - 15:25

Bonjour,

Essayez de déclarer le curseur, puis de l'ouvrir pour une requête particulière.

CREATE OR REPLACE FONCTION Calcul_Exxxm RETURNS void
AS $$
DECLARE
Curs1_Quot CURSOR;
--Déclaration d'un enregistrement de Curs_Donnees_Quot
enregDonnees_Quot Curs1_Quot%ROWTYPE;
BEGIN
--Lecture de tous les enregistrements
OPEN Curs1_Quot FOR
SELECT * FROM DONNEES_QUOT WHERE RG IS NOT NULL ;
LOOP
FETCH Curs1_Quot INTO enregDonnees_Quot;
EXIT WHEN Curs1_Quot%NOTFOUND;-- Fin de liste: on sort
-- lancer fonction
Calcul_Exxxt_Jour(enregDonnees_Quot.dat);
END LOOP;
CLOSE Curs_Donnees_Quot;
END ;
$$ LANGUAGE 'plpgsql';

Librement,
Stéphane Schildknecht


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.