Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD
Autres SGBD Vos questions sur les autres SGBD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2007, 19h11   #1
Invité régulier
 
Inscription : mai 2004
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 60
Points : 7
Points : 7
Par défaut [Teradata] Procédures stockées

Bonsoir,

Connaissez vous des forums sur le SGBD Teradata.
Je bute pour réaliser une procédure stockée.

Merci
rico3434 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 11h27   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 562
Points : 7 562
Je ne connais pas de forum Teradata en français.

Quel est ton problème ?
Pourquoi une procédure stockée plutôt qu'une requête ?

Avec quelle version de Teradata ?
Je me doute que c'est au moins la V2R5.0 si tu cherches à utiliser des procédures stockées, mais elle commence à dater...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 12h32   #3
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 562
Points : 7 562
Une piste de recherche...

Une procédure stockée est compilée.
Des requêtes avec des éléments non clairement identifiés seront refusées.
Par exemple :
Code :
1
2
SELECT * FROM matable;
INSERT INTO matable VALUES (....);
Il faut impérativement détailler la liste des colonnes
Code :
1
2
3
4
5
6
SELECT col1, col2 
FROM matable
;
INSERT INTO matable (col1, col2) 
VALUES (:x, :y)
;
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 12h56   #4
Invité régulier
 
Inscription : mai 2004
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 60
Points : 7
Points : 7
J'ai réussi à trouver une solution.
J'essayai de réaliser une procedure dans un bteq.
Il faut mettre la procedure dans un fichier et l'appeler avec l'option
.compile file=nomfichier

Merci quand pour ton aide, mais cela serait plus sympa si un forum en français existait.
rico3434 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 13h06   #5
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 562
Points : 7 562
Citation:
Envoyé par rico3434 Voir le message
Merci quand pour ton aide, mais cela serait plus sympa si un forum en français existait.
Tu peux toujours venir poster ici
ça m'est plus facile de répondre en français
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 14h49   #6
Invité régulier
 
Inscription : mai 2004
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 60
Points : 7
Points : 7
Par défaut curseur

J'essaie de créer la procédure suivante. C'est pour apprendre.
Code :
1
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
 BEGIN
    DECLARE liste CURSOR FOR
    SELECT * 
    FROM ma_table
    ORDER BY 1,2,3;
 
    OPEN liste;
    FETCH liste
    INTO 
       :p1
     , :p2
     , :p3
     , :p4
     , :p5
     , :p6;
 
    while (sqlcode!=100) do
      FETCH liste
      INTO 
       :p1
     , :p2
     , :p3
     , :p4
     , :p5
     , :p6
      ;
      INSERT INTO MA_TABLE2     
      VALUES(:p1, :p2, :p3, 'TOTO', '123', 'Y'); 
    done;
END;
Le programme s'arrete avec une erreur sur la ligne
,:p6 dans le premier fetch.
Faut-il déclarer les variables hotes.
rico3434 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 15h27   #7
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 562
Points : 7 562
Citation:
Envoyé par rico3434 Voir le message
Faut-il déclarer les variables hotes.
Tout doit être déclaré !
Une boucle WHILE se termine par un END WHILE

Je t'encourage vivement à te reporter à la documentation (SQL Reference : Data Definition Statements).
Si tu ne l'as pas sous la main, elle est entièrement et gratuitement téléchargeable sur le site de Teradata.

J'ai beau manipuler cet outil depuis un certain temps, je n'ai pas encore rencontré de raison de développer des procédures stockées qu'une bonne requête ou une macro ne pouvait résoudre.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 15h31   #8
Invité régulier
 
Inscription : mai 2004
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 60
Points : 7
Points : 7
J'ai un peu progressé.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN
    DECLARE liste CURSOR FOR
    DECLARE p1b integer;
    DECLARE p2b integer;
 
    SELECT p1, p2 
    FROM ma_table;
 
    OPEN liste;
    while (sqlcode=0) 
      FETCH liste INTO p1b, p2b;
      INSERT INTO MA_TABLE2     
      VALUES(p1b, p2b); 
    end while;
END;
Le programme plante sur le while.
Missing/Invalid sql statement E(3706)
Pourtant, ce bout de code est issu de la doc.
rico3434 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 15h50   #9
Invité régulier
 
Inscription : mai 2004
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 60
Points : 7
Points : 7
Je me suis orienté vers une procedure stockée car je pouvais réaliser un curseur pour balayer tous les enregistrements récupérés lors d'un select.
Mais apparemment, il est possible de réaliser la même chose avec une macro. Mais je manque d'exemple.

Merci pour avoir pris le temps de répondre à mes questions.
rico3434 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 17h45   #10
Invité régulier
 
Inscription : mai 2004
Messages : 60
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 60
Points : 7
Points : 7
Apres avoir éliminé les petites erreurs des exemples,
while (condition) do
end while;
tout fonctionne.

Encore un grand merci.
rico3434 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h18.


 
 
 
 
Partenaires

Hébergement Web