SQL Passthrough

PRÉPARÉ PAR: JEAN-FRANCOIS TRUDEL
LINKEDIN: HTTP://CA.LINKEDIN.COM/IN/TRUDELJEFF
1
TABLE DES MATIÈRES
 QU’EST-CE QUE LE SQL PASS-THROUGH?
 SQL PASS-THROUGH IMPLICITE
 SQL PASS-THROUGH EXPLICITE
 UTILISATIONS / LIMITATIONS
 QUESTIONS
2
QU’EST-CE QUE LE SQL PASS-THROUGH?
LE SQL PASS-THROUGH EST UNE COMPOSANTE DU SAS/ACCESS.
CETTE COMPOSANTE FAIT APPEL DIRECTEMENT À LA BASE DE DONNÉES
RELATIONNELLE CIBLE POUR RÉSOUDRE UNE REQUÊTE SQL.
Serveur BD
(Oracle, DB2, etc.)
Serveur SAS
Envoie de la
Requête SQL
Traitement de la
Requête SQL
Envoie des
Données générées
SQL Pass-through
3
PASS-THROUGH IMPLICITE
 IL EXISTE 2 VERSIONS DU PASS-THROUGH:
 IMPLICITE; LORSQUE L’ON UTILISE UN LIBNAME
4
PASS-THROUGH IMPLICITE
 LORS DE L’UTILISATION DU PASS-THROUGH IMPLICITE, LE SERVEUR SAS RECOMPILE LE
CODE SAS (DATA STEPS, PROC SQL, ETC.) EN LANGAGE SQL ET LE TRANSFERT ENSUITE
AU SERVEUR DE BASE DE DONNÉE POUR LE TRAITEMENT.
Serveur BD
(Oracle, DB2, etc.)
Serveur SAS
Pgm SAS
Conversion
SQL
Pass-Through
Traitement
SQL
Pgm SAS
LISTE DES FONCTIONS ACCEPTÉES PAR LE PASS-THROUGH IMPLICITE
EXEMPLE ORACLE : COUNT, SUM, AVG, MAX, SQRT, UPCASE, ETC.
5
PASS-THROUGH IMPLICITE
 IL FAUT FAIRE ATTENTION, LORSQUE LE PROGRAMME SAS N’EST PAS EN MESURE DE
TRADUIRE ET FAIRE TRAITER LA COMMANDE EN TANT QUE REQUÊTE
SQL, IL
APPORTERA TOUTES LES DONNÉES NÉCESSAIRES POUR FAIRE LE TRAITEMENT SUR LE
SERVEUR
SAS.
Serveur SAS
Serveur BD
(Oracle, DB2, etc.)
 LES INSTRUCTIONS I/O SONT CELLES QUI COUTENT LE PLUS EN TEMPS MACHINE.
6
PASS-THROUGH EXPLICITE
 EXPLICITE: LORSQUE L’ON FORCE LE TRANSFERT DU CODE SQL NATIF SUR LE
SERVEUR DE DONNÉES.
7
PASS-THROUGH EXPLICITE
 LORS DE L’EXÉCUTION DU PASS-THROUGH EXPLICITE, LE SERVEUR SAS NE FAIT QUE
TRANSFÉRER CE QUI EST IMBRIQUÉ DANS LA REQUÊTE VERS LE SERVEUR DE BASE DE
DONNÉES.
Serveur BD
(Oracle, DB2, etc.)
Serveur SAS
Pgm SAS
Pass-Through
Traitement
SQL
Conversion
SQL
 LA PORTION SQL DU PROGRAMME SAS ENVOYÉ VERS LE SERVEUR DE BD DOIT ÊTRE
ÉCRITE EN SQL PROPRE AU SERVEUR DE BASE DE DONNÉES
(ORACLE, DB2, ETC)
8
POURQUOI UTILISER LA VERSION EXPLICITE?
 REQUÊTES COMPLEXES COMPRENANT PLUSIEURS JOINTURES AVEC UN WHERE
CLAUSE COMPLIQUÉE
 LECTURE / ÉCRITURE SUR LA BASE DE DONNÉES SANS RAPPORTER LES DONNÉES
SUR LE SERVEUR SAS
 UTILISATIONS DE FONCTIONS NATIVES.
TO_DATE, TRUNCATE, ETC.
STORED PROCEDURE, ETC.
 COMMENT SAVOIR SI ÇA VAUT LE COUP?
9
LinkedIn: http://ca.linkedin.com/in/trudeljeff
10