2009-12-04 3 views
3

J'ai plusieurs scripts que je voudrais démarrer à partir d'un menu présenté à l'utilisateur SQLPlus. Quelque chose comme:

S'il vous plaît faire une sélection:
1: Est-ce scénario un
2: Est-ce scénario b
3: Script Do c
Comment créer un menu dans SQLPlus ou PL/SQL

J'ai juste besoin d'un point dans la bonne direction, pas rapide répondre.

Répondre

2

Il est difficile d'accomplir ce que vous essayez de faire avec SQLPlus et/ou PL/SQL. SQLPlus est une interface pour les bases de données Oracle.

Son but principal est d'effectuer des requêtes sur un SGBDR Oracle. PL/SQL est un langage permettant de manipuler des données dans Oracle.

Au lieu de cela, si vous voulez quelque chose avec l'interaction de l'utilisateur, je vous suggère d'écrire un petit script/programme insérer votre langue préférée ici (pourrait python, C/C++, C#, Java) avec une connexion Oracle effectuer les requêtes SQL ou les programmes PL/SQL dont vous avez besoin.

+0

Vous pouvez demander des variables définies dans des scripts exécutés via SQLPlus. Voir ma réponse pour les détails, mais voici un lien concernant les variables & SQLPlus: http://www.orafaq.com/node/515 –

0

DBMS_OUTPUT peut être utilisé pour imprimer des lignes à l'écran. On dirait qu'il a des fonctions qui font aussi un GET_LINE, mais je ne l'ai jamais utilisé et je ne sais pas comment ils fonctionnent.

Vous avez juste besoin de faire attention à vos paramètres SQLPlus. Il peut tronquer des lignes si vous ne l'avez pas configuré correctement.

0

Je l'avais avec un vrai langage pour cela (selon le commentaire de Pablo).

Vous pourriez avoir des choses dans un fichier login.sql qui affiche une suggestion de liste lorsque vous vous connectez (instructions PRINT ou PROMPT SQL * Plus). Et vous pourriez avoir un tas de scripts appelés 1.sql, 2.sql etc. qui seraient exécutés si l'utilisateur entrait @ 1, @ 2 etc. (tant qu'ils sont dans le bon répertoire).

Mais vraiment SQL * Plus n'est pas adapté pour cela.

2

Vous pouvez exécuter des scripts à partir d'un script maître:

CASE LOWER(&v_script_selection) 
    WHEN 'a' THEN 
    @script_a.sql 
    WHEN 'b' THEN 
    @script_b.sql 
    WHEN 'c' THEN 
    @script_c.sql 
    ELSE 
    DBMS_OUTPUT('No such option available') 
END 

&variablename est utilisé pour se référer à la variablename variable SQLPlus, de la même manière $variablename est utilisé dans les scripts shell. Si variablename n'est pas défini, SQLPlus invite l'utilisateur à entrer une valeur.

Vous pouvez indiquer un chemin relatif au script principal. Dans l'exemple, les scripts de support doivent figurer dans le même répertoire.

+0

CASE n'est pas une commande SQL Plus valide, donc cela ne fonctionne pas. –

+0

@Tony: Ça va marcher, ce n'est pas une réponse complète. –

18

Voici un SQL Plus script pour le faire:

prompt Please make a selection: 
prompt 1: Do script a 
prompt 2: Do script b 
prompt 3: Do script c 

accept selection prompt "Enter option 1-3: " 

set term off 

column script new_value v_script 

select case '&selection.' 
     when '1' then 'script_a' 
     when '2' then 'script_b' 
     when '3' then 'script_c' 
     else 'menu' 
     end as script 
from dual; 

set term on 

@&v_script. 

NB Le « menu » dans la partie ELSE de l'expression de cas est le nom de ce script, de sorte qu'il se tourne à nouveau lorsque l'utilisateur entre une option invalide.

+1

+1. Bon. J'aimerais pouvoir doubler le vote. – Guru

+0

apprendre quelque chose de nouveau tous les jours, merci. – David

0

Si les scripts sont totalement indépendants, j'utiliserais un simple fichier batch ou un script shell.

Questions connexes