Simple code en PL/SQL
Fermé
soufian1364
lolla - 1 juin 2011 à 11:15
- Messages postés
- 41
- Date d'inscription
- mercredi 26 septembre 2007
- Statut
- Membre
- Dernière intervention
- 23 mai 2016
lolla - 1 juin 2011 à 11:15
A voir également:
- Pl/sql saisie clavier
- Sequence pl sql ✓ - Forum - Astuces et Solutions
- Ora-06502: pl/sql : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres ✓ - Forum - Oracle
- Pl sql (+) - Forum - Programmation
- Simple code en PL/SQL - Forum - Programmation
- PL/SQL - Introduction au langage PL/SQL - Articles
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
soufian1364
8 nov. 2008 à 20:37
- Messages postés
- 41
- Date d'inscription
- mercredi 26 septembre 2007
- Statut
- Membre
- Dernière intervention
- 23 mai 2016
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.
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.
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
accept var char; => legale.
accept var char(2); => illegale.
bonne journée
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.
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.
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....
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....
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;
/
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;
/
soufian1364
8 nov. 2008 à 16:42
- Messages postés
- 41
- Date d'inscription
- mercredi 26 septembre 2007
- Statut
- Membre
- Dernière intervention
- 23 mai 2016
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.
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.
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
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
fatitima
23 nov. 2008 à 00:42
- 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