Lire attentivement Connexion Oracle 10g (plus en service, voir documentation Oracle 11) et Documentation sur Oracle 10G
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
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 180 (valeur supérieure à la longueur du n-uplet) |
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 ? | 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 consécutifs en début de ligne : -- un commentaire Pour commenter un bloc entier, même syntaxe qu'en java: / |
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) |
Ma requête SQL suivante est correcte mais elle semble durer un temps “infini” …
SELECT COUNT(*) FROM C; --affiche le nombre de Clubs
Enlever le commentaire (les doubles tirets) sur la ligne du FROM ou du WHERE. Ne jamais mettre de commentaire sur la même ligne que la requête. Séparer les lignes de commentaires des lignes de la requête. Vérifier que vous avez bien l'invite SQL> dans le buffer *SQL* avant d'exécuter une requête
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; |
Que faire en cas d'erreur 'ORA-21700 ': l'objet n'existe pas ou va être supprimé ? | Fermer la session oracle et se reconnecter. Explication: vous tentez d'accéder à des types ou des objets précédemment supprimés. |
Aller vers Connexion Oracle 10g (plus en service, voir documentation Oracle 11), Documentation sur Oracle 10G, FAQ pour les TME SQL et PL/SQL