FAQ pour les TME SQL et PL/SQL
Lire attentivement ConnexionOracle et DocumentationOracle
Rappel: l'accès à Oracle se fait avec l'outil client sqlplus
Ce document contient 2 sections : une pour sqlplus, l'autre pour PL/SQL
1) Questions sur le client sqlplus
^Question | ^Réponse |
Sous sqlplus, l'exécution de mon fichier ne renvoie aucun message... | ajouter un point-virgule à la fin de l'ordre SQL. Ou ajouter une barre / à la fin du bloc PL/SQL. |
sqlplus affiche le nombre 2 au lieu d'afficher le résultat de la requête | ajouter un point-virgule en fin de requête |
Comment éviter l'erreur suivante ? SP2-0734 commande inconnue au début de ...le reste de la ligne est ignoré | Ne pas insérer de ligne vide au milieu d'un ordre SQL. Autre réponse: autoriser les lignes vides : set sqlbl on |
Comment supprimer le message suivant ? Entrée limitée a nn caratères | Ajouter un retour chariot (Entrée) à la fin de votre fichier |
Comment éviter que le résultat d'une requête soit découpé en blocs de 20 tuples ? | set pagesize 200 |
Comment afficher un tuple long sur une seule ligne | set linesize n (avec n > longueur du tuple) |
Comment enregistrer une trace d'exécution ? | copier-coller le résultat de l'exécution vers l'éditeur de texte. Autre réponse, enregistrer la trace dans le fichier trace.lst spool trace @requete (ou toute autre commande) ... etc. ... spool off Attention, le fichier trace.lst est écrasé à chaque enregistrement de trace. |
Quelle est l'erreur dans la requête suivante select * fron Gain where !NomSponsor?=&!NomSponsor? | Vous utilisez une variable de substitution au lieu d'une variable PL/SQL. solution1: saisir 'Reebok' entre apostrophes au lieu de Reebok solution2 : mettre la variable de substitution entre apostrophes : where !NomSponsor?='&!NomSponsor?' solution 3: utiliser une variable PL/SQL. |
Quelle est la syntaxe pour les commentaires ? | Deux tirets en début de ligne : -- un commentaire Pour commenter un bloc entier, même syntaxe qu'en java: /* bloc de plusieurs lignes */ |
L'invite est DOC> au lieu de SQL> | Il manque la marque de fin de commentaire '*/' Ctrl-C pour retrouver l'invite SQL> |
Comment éditer des requêtes en couleur ? | avec l'éditeur emacs : Alt-x sql-mode puis Menu SQL > highlighting > oracle keywords |
Comment avoir l'historique des commandes entrées sous sqlplus | Utiliser sqlplus à l'intérieur d'emacs : Dans la fenêtre sqlplus interactive d'emacs (SQL). L'historique des commandes est : Ctrl !FlècheHaut : commande précédente Ctrl !FlècheBas : commande suivante Ne pas utiliser la fenêtre SQL pour saisir vos requêtes, mais éditer vos requêtes dans une autre fenêtre. |
Erreur ORA-00054: resource occupée ...NOWAIT | Fermer toutes vos connexions à oracle, puis attendre quelques minutes et recommencer... blocage provoqué par une session concurrente qui met à jour la définition de vos tables |
Quel est le schéma de la relation R ? | describe R (ou desc R sans point virgule) |
Quelle est la valeur par défaut des paramètres de l'environnement sqlplus | show all (affiche la liste des paramètres) |
Qui suis-je ? | show user ou select username from v$session where sid = (select distinct sid from v$mystat); |
erreur ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à 'OGC_X' | ambigüité entre votre variable nommée x et un objet prédéfini de même nom dans votre requête, renommer votre variable x (en x1 par exemple) |
2) Questions sur la programmation en PL/SQL
^Question | ^Réponse |
Comment effacer tous les types, tables et procédures que j'ai créés | @vider |
Le type booléen existe-t-il ? | Oui: BOOLEAN |
Mon programme ne produit plus aucun affichage... | ajouter SET SERVEROUTPUT ON |
Comment compiler un type ou une procédure ? | la commande est / (la barre de division) ou run |
Comment afficher les erreur de compilation ? | show err ou select * from user_errors; |
Comment afficher le nom de tous les objets définis par l'utilisateur (table, type, trigger, fonction, ...) ? | @liste ou call(liste_source()); ou select object_name, object_type, status from user_objects order by object_name; |
Comment afficher le code source d'une fonction avec les numéros de ligne | @source nom_fonction ou call(code_source('nom_fonction')); ou select * from user_source where name = 'nom_fonction' order by type, line; |