|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() mathilde Développeur décisionnel Inscription : février 2012 Messages : 4 ![]() |
Bonjour,
Je souhaite exécuter une requête oracle en utilisant des variables oracle pour des soucis de performance. Code SAS d'origine (les dates sont des macro variables SAS) : Code :
Code :
Cordialement, Mathilde. |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 793 ![]() |
Quelle est la question ?
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
|
|
#3 |
|
Invité de passage
![]() mathilde Développeur décisionnel Inscription : février 2012 Messages : 4 ![]() |
la question est :
Comment intégrer le code Oracle dans une proc sql de sas ? J'ai essayé avec execute() by oracle ; mais ça ne marche pas : Code :
ERROR: ORACLE execute error: ORA-00900: invalid SQL statement. Mathilde. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() |
http://support.sas.com/techsup/technote/ts566d.pdf
Tu as essayer de faire une requête simple? Pour essayer de savoir si ce sont les dates qui pose le problème. Code :
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() mathilde Développeur décisionnel Inscription : février 2012 Messages : 4 ![]() |
oui le premier code marche (même avec les dates).
Ce que je n'arrive pas à faire c'est utiliser des variables oracle au lieu des variables sas dans la requete. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
Pourquoi tu veux utiliser des variables oracle?
Tu as pensé à utiliser des macro variables SAS.
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
Le fait d'utiliser une macro variable SAS ne dégradera pas les performances.
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() mathilde Développeur décisionnel Inscription : février 2012 Messages : 4 ![]() |
Si justement, ça dégrade les performance au niveau de Oracle. Nous avons fait des tests et on gagne 80% de temps en utilisant des bind variables dans Oracle au lieu d'utiliser des constantes. En fait, à l'origine, on utilisait des macro variables sas mais elles sont interprétées par SAS avant que la requête soit envoyée à Oracle, donc c'est comme si on utilisait des constantes pour oracle.
|
|
|
00
|
|
|
#9 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 793 ![]() |
le mieux serait d'appeler une procédure stockée Oracle qui contient les dates en paramètres.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
|
|
#10 | |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 014 ![]() |
Citation:
Les Bind variables sont des objets Oracles que SAS ne connait pas. |
|
|
|
00
|
|
|
#11 | ||
|
Membre expérimenté
![]() Inscription : avril 2009 Messages : 538 ![]() |
je n'arrive pas a croire que un bind oracle marche mieux qu'un to_date
![]() rien ne t'empeche de stocker dans ta macro-variable un to_date: Code :
|
||
|
|
00
|
|
|
#12 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 014 ![]() |
to_date est une fonction et les binde variables sont des applications utilisées pour optimiser les traitements , en gros c'est pour éviter que le moteur Oracle fait un parse de la requette pour chercher le bon plan d'execution à chaque exécution de la requête et c'est ce qui permet d'optimiser les traitements.
|
|
|
00
|
|
|
#13 |
|
Membre expérimenté
![]() Inscription : avril 2009 Messages : 538 ![]() |
oui pour du PL/SQL on gagne mais une pauvre requête cela ne doit pas être cela qui impacte les temps de traitements.
sauf si la requête est rejouée très très souvent, alors là je rejoindrais plutôt la réponse procédure stockée. |
|
|
00
|
|
|
#14 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 014 ![]() |
OUI OUI ... procédure stocke , package ou autre choses... avec la commande execute.
Mais comment rappatrier les résultats de ces procédures stockées Oracle dans SAS? |
|
|
00
|
|
|
#15 | ||
|
Membre expérimenté
![]() Inscription : avril 2009 Messages : 538 ![]() |
OK pour le retour...
mais j'aimerais savoir quelle est la procédure de test qui a permis de conclure que : Citation:
Citation:
il est déconseillé de ne plus utiliser les requêtes qui forcent l'optimiser (hints) (depuis 10g je crois) X |
||
|
|
00
|
|
|
#16 | |||
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 793 ![]() |
Citation:
Code :
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|||
|
00
|
|
|
#17 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 014 ![]() |
Citation:
Citation:
Et oui Oracle déconseille d'utiliser les BIND (à lire sur leurs site). |
||
|
|
00
|
|
|
#18 | |||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 014 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#19 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 793 ![]() |
Tu as vu dans mon exemple que je récupère le résultat de la requête. Tu ne sais donc pas que ma procédure fait une jointure de x tables.
Donc si ta procédure fait des INSERT INTO et que tu renvoies un résultat ( un RC ) je pense que SAS peut l'exécuter. L'idée est quand même d'exécuter une procédure pour rapatrier quelque chose. Pour une autre utilisation il faut tester.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
|
|
#20 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 014 ![]() |
PK donc une procédure? une proc sql pass trouth + PL ou transact /SQL ne devra pas suffire ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com