Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:documentation:oracle:oracle10:questionsursql

Ceci est une ancienne révision du document !


FAQ pour les TME SQL et PL/SQL

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

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' 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 ?
select *
from 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:
/
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;
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, TME Oracle

site/enseignement/documentation/oracle/oracle10/questionsursql.1286979590.txt.gz · Dernière modification: 13/10/2010 16:19 par bd