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;

Aller vers Oracle, Accueil