Simple code en PL/SQL

Fermé
soufian1364
Messages postés
41
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
23 mai 2016
- 7 nov. 2008 à 00:16
 lolla - 1 juin 2011 à 11:15
Bonjour tout le monde,

j'ai la rage, j'arrive pas à résoudre un problème microscopique, Bref:

je veux un programme PL/SQL (SQL/PLUS) qui demande à l'utilisateur de taper quelque chose sur clavier et le programme l'affiche (tout simplement) à l'ecran.

j'ai fait un truc, mais ça veut pas marcher :


SET SERVEROUTPUT ON;
SET VERIFY OFF;
ACC v_sub VARCHAR2(25) PROMPT'veuillez saisir quelque chose';
DECLARE
v_sub VARCHAR2(25);
BEGIN
DBMS_OUTPUT.PUT_LINE('vous avez saisi : '|| v_sub);
END;
/



pour information:
je travaille avc " Invité de commande " (ça veut dire que c'est du SQL/PLUS)

6 réponses

essaye des variables de substition ca veut dire que tu demandera a l'utilisateur de te donné la valeur a assigné il suffit de mettre sub=&nomvariable
1
soufian1364
Messages postés
41
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
23 mai 2016
4
8 nov. 2008 à 20:37
salut les mec,

voilà, j'ai trouvé ce que je cherche, le code suivant permet de demander la saisi à l'utilisateur en respectant ma propre expression à afficher:

SET SERVEROUTPUT ON;
SET VERIFY OFF;

ACC vs CHAR prompt'Veuillez saisir le salaire annuel de l employé 45';
BEGIN

DBMS_OUTPUT.PUT_LINE('le salaire saisi est : '|| '&vs');
END;
/


mais, dans la commande:

ACC vs CHAR prompt'Veuillez saisir le salaire annuel de l employé 45';

si vous remplacez "CHAR" avec "VARCHAR(25)" ça marche pas, j'ai essayé de changé le "CHAR" avc autre types de variable, rien ne veux foncitionné (erreurs), ça marche seulement avec "CHAR" et "NUM".

ce qu'il me faut (je crois) maintenent, c'est un cour ou quelque chose comme ça, pour connaitre tout les type de variable qu'on peux utiliser dans une commande ACCEPT.

Merci de vouloir m'aider.
1
c'est un peu vieux le topic, je suis tombé dessus par hasard,ceci dit, j'aimerai juste rajouter, que si je ne me trompe pas, que tous les types sql fonctionne avec ACCEPT, l'idée et de ne pas mentionner la taille du type de la variable.
accept var char; => legale.
accept var char(2); => illegale.
bonne journée
0
salut

effectivement, mentionner une taille pour ces variables est une erreur car ce sont des variables de SQL*Plus, le programme qui sert d'interface texte (de console en qqe sorte) entre un opérateur et la base.

le set server output on est un commande SQL*Plus qui indique que les outputs faits par le paquetage DBMS_OUTPUT doivent être affichés par SQL*Plus. Si l'on travaille avec une autre interface, il y a de grandes chances que l'on ne voie rien arriver
le ACCEPT est aussi une commande SQL*Plus pour faire un input sur une variable SQL*Plus

par contre, DECLARE, BEGIN, END sont des instructions PL/SQL. SQL*Plus ne sait pas les interpréter et se contente de les envoyer à la base de données.
0
Soit le schéma relationnel de la base de données commerciale "BDCOM":
Client (Codc, Nomc, Ville, CA, Cred, CredMax)
Commande (Numc, Datec, Mntc, #Codc) -- `#' indique que l'attribut est une clé étrangère
Produit (Ref, Libp, PU, Qtes, Seuil)
Fournisseur (Codf, Nomf, Villef)
Lig_cde (#Numc, #Ref, Qtec)
Frs_Prod (#Codf, #Ref, PUf, Qtef)
Ecrire un bloc PL/SQL qui permet pour chaque client de la ville Tunis de faire une réduction du
Mntc de ses commandes passées en 2010 selon la formule suivante :
Si Cred >= 10 000 alors la réduction est de 0%
Si Cred < 10 000 alors la réduction est de 5%
Si Cred < 5 000 alors la réduction est de 10%
Si Cred < 1 000 alors la réduction est de 15%
Le résultat du traitement (uniquement les commandes qui ont subit une réduction) sera mis dans la table
Réd_Tunis_2010 sans toucher la table commande.
Réd_Tunis_2010 (Codc, Nomc, Numc, Datec, Mntc, Poucent_Red, Mntc_réduit)
Remarque:
Pourcent_Red est de type VARCHAR2(3) et doit être écrit sous cette forme : "10%" ou "5%"...






s 'il vous plais sauves. donner moi la solution de cette grand problem.aman....
0
BOnjour,

je ne m'y connais pas en PL/SQL, mais essai peut être de déclarer avant ta variable :

SET SERVEROUTPUT ON;
SET VERIFY OFF;

DECLARE
v_sub VARCHAR2(25);

ACC v_sub VARCHAR2(25) PROMPT'veuillez saisir quelque chose';

BEGIN

DBMS_OUTPUT.PUT_LINE('vous avez saisi : '|| v_sub);

END;
/
0
soufian1364
Messages postés
41
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
23 mai 2016
4
8 nov. 2008 à 16:42
reBonjour,

d'abors merci de vouloir aider,

pour Nixial, j'ai fait copier/coller de ton code, ça marche pas (erreurs), même si ça a l'aire logique le raisonnement.

Pour Farok, ça marche l'idée, j'ai fait :

SET SERVEROUTPUT ON;
SET VERIFY OFF;

DECLARE
v_sub VARCHAR2(25) := '&nomvariable';

BEGIN
DBMS_OUTPUT.PUT_LINE('vous avez saisi : '|| v_sub);
END;
/


sauf que, ce que je veux moi, c'est pas ça: dans le code ci-dessus le programme demande à l'utilisateur:

Veuillez entrer une valeur pour la variable nomvariable

mais moi, je veux pas que le programme m'imposer cette expression insignifiante: par exemple, je veux qu'il m'affiche:

Veuillez saisir le salaire annuel de l'employé 45

Alors, quoi faire ?
déjà je sais qu'il faut utiliser le truc ACCEPT nom_variable PROMPT'une phrase à afficher';
mais je sais pas comment.

J'espère avoir une reponse dans les 3 jours qui suivent.
en tout cas merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SET SERVEROUTPUT ON;
DECLARE
v_sub varchar2(25):='&v_sub';
BEGIN
DBMS_OUTPUT.PUT_LINE('vous avez saisi '|| v_sub);
END;
je fait ce code au cas ou quelqu un passerait :p
0
fatitima
Messages postés
1
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
23 novembre 2008

23 nov. 2008 à 00:42
stp je vedrais voir comment ajouter les utilisateurs sous sql
-2