|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Bonjour, j'ai ce code :
Code :
Je l'appelle avec ceci : Code :
Code :
Il y a deux erreurs, et je ne comprends aucun des deux... Une idée ? edit : pour info la table matrix_state contient uniquement des deux champs : 'id_matrix_state' qui est un number(10) 'matrix_state_name' qui est un char(20) Et le champ 'id_matrix_state' est une séquence (d'où le '.nextval from dual' dans la macro Code :
|
||||||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
essayes de mettre un ';' après ton étiquette "%restart:;"
|
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Ah oui, pardon. Je croyais l'avoir sélectionnée.
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
Attention ton programme risque de boucler.
Si il ya des problèmes avec la base Oracle |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Comment ça il risque de boucler si il y a un problème avec la base ?
Tu parles du %goto restart qui ramène toujours au début si il ne retrouve pas l'identifiant qu'il a inséré ? Je ne vois pas comment ce serait possible puisque la commande d'insertion semble correcte. Ce qui ma gêne, c'est que sur certains tests tout à l'heure, au lieu de renvoyer l'identifiant dans return, ce qu'il renvoyait c'était texto : "proc sql"... Je n'ai pas compris pourquoi, pourtant la syntaxe me paraissait correcte avec le %label et le %goto. Une suggestion ? Je suis bien largué là... |
|
|
00
|
|
|
#6 | ||||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Bonjour !
Bon, après quelques prises de tête, j'ai abandonné l'idée de comprendre ce qui ne marchait pas hier. En tout cas pour une partie. En modifiant les 4 dernières lignes : Code :
Code :
Je ne sais pas pourquoi il n'aimait pas mon &return assigné à une variable via un %let, mais le fait est qu'en passant par une variable globale que je supprime après l'avoir assignée à une autre variable locale après la macro, je contourne le problème. Pourtant j'ai déjà utilisé cette astuce à plusieurs reprises sans soucis... Barhaoui, si tu rencontres un truc similaire et que tu comprends ce qui ne va pas, n'hésite pas à préciser pourquoi. ![]() Concernant l'erreur sur le 'select' par contre, j'ai pas compris... Je me demande si ce n'était pas la rémanence de l'exécution d'une autre commande qui tournait toujours sur le serveur SAS... Quoique j'ai eu à nouveau ce soucis une seule fois ce matin, quand j'essayais d'exécuter la macro avec cette commande (commande que j'ai lancé à plusieurs reprises sans voir cette erreur spécifique) : Code :
%let test = %select_id_FK(&table_tmp, &column_tmp, &var, &column_FK); Bizarrerie, quand tu nous tiens...
|
||||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
Quand je mets une virgule après l'étiquette %restart: le programme ne signal plus le poblème du select!!
Cool si ça marche |
|
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Ah ?
Il n'aime donc pas que je mette la commande %put après le label ? Ca donne donc ça ? Code :
Merci. |
||
|
|
00
|
|
|
#9 | |||||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Retour ici...
Toujours avec la même macro, lorsque je l'appelle à partir d'une autre macro, j'ai une erreur, alors que si je l'exécute seule, pas de soucis. Voici les commandes d'appel : Code :
Code :
Notez qu'il manque ici (par rapport au log dans SEG) de part et d'autres de Citation:
CARRE CARRE Un peu comme lorsque dans le bloc note de windows on essaie de coller ces caractères : ✠✠ |
|||||
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Pour vous : (ça vous évitera de chercher quoi rentrer pour relancer le code, pensez à compiler la macro avant
Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Le code au dessus vous permet de reproduire exactement le bug. Si vous savez comment contourner ce problème, je suis toute ouïe.
|
|
|
00
|
|
|
#12 | ||||
|
Membre Expert
![]() ![]() |
1 Tu as des problème de nom de variables
2 Je ne comprends pas prq tu fais ça : Code :
Code :
|
||||
|
|
00
|
|
|
#13 | ||||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Le code que j'ai mis, notamment la définition de var et matrix_state_name__1, c'est pour que vous puissiez compiler le code, je l'ai modifié car je n'ai pas exactement la même chose dans ma suite de macro (je vais pas filer tout le code ici, c'est pas utile).
Le soucis que j'ai pour définir var, c'est qu'il reçoit le contenu d'une autre variable et que celui-ci n'est pas entre quote. Exemple : Code :
Code :
C'est là que je pense m'y prendre mal. La solution du problème je pense réside là : comment rajouter des quote au contenu de matrix_state_name__1 ? |
||||
|
|
00
|
|
|
#14 | |||||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
En fait, on peut illustrer le soucis le plus simplement avec le code suivant (à exécuter tel quel
Code :
Log : Code :
Citation:
|
|||||
|
|
00
|
|
|
#15 | ||
|
Membre Expert
![]() ![]() |
Tous simplement tu rajoutes une double quote dans la proc SQL
Code :
|
||
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Eh bien... Je devais être fatigué là... A trop se pencher sur le problème, on perd de vue la solution. Merci infiniment !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com