Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2007, 00h52   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 2
Points : 0
Points : 0
Par défaut Problème de débutant PL/SQL

Bonsoir,

J'espère que je ne vais pas paraître ridicule avec mon problème qui est le suivant :
Je souhaiterais créer une procedure qui prenne un argument et affiche les lignes d'une table dont un des champ est égal à l'argument. En SQL ca donne çà :

Code :
SELECT * FROM Ville WHERE nomVille = '&1';
Je n'arrive pas le traduire en PL SQL pour créer une procédure. J'ai tenté çà mais apparement on ne peut pas afficher une ligne entière avec DBMS_OUTPUT.PUT_LINE :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE OR REPLACE  PROCEDURE Vil(arg Ville.nomVille%Type) IS 
PRAGMA AUTONOMOUS_TRANSACTION;
CURSOR c1 IS SELECT * FROM Ville WHERE nomVille = arg; 
ligne Ville%ROWTYPE;
BEGIN  
    OPEN c1;
    LOOP
    FETCH c1 INTO ligne;
    EXIT WHEN c1%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(ligne);
END LOOP;
CLOSE c1;
END;
/
merci d'avance
adonis_sakis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 01h02   #2
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Bienvenue dans ce forum.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE OR REPLACE PROCEDURE Vil(arg Ville.nomVille%Type) IS 
PRAGMA AUTONOMOUS_TRANSACTION;
CURSOR c1 IS SELECT champ1,champ2,champ3 FROM Ville WHERE nomVille = arg; 
ligne Ville%ROWTYPE;
BEGIN 
OPEN c1;
LOOP
FETCH c1 INTO ligne;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(ligne.champ1||'-'||ligne.champ2||'-'||ligne.champ3);
END LOOP;
CLOSE c1;
END;
/
mais à quoi ça sert ????
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 01h24   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 2
Points : 0
Points : 0
Citation:
Envoyé par salim11 Voir le message
Salut,

Bienvenue dans ce forum.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE OR REPLACE PROCEDURE Vil(arg Ville.nomVille%Type) IS 
PRAGMA AUTONOMOUS_TRANSACTION;
CURSOR c1 IS SELECT champ1,champ2,champ3 FROM Ville WHERE nomVille = arg; 
ligne Ville%ROWTYPE;
BEGIN 
OPEN c1;
LOOP
FETCH c1 INTO ligne;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(ligne.champ1||'-'||ligne.champ2||'-'||ligne.champ3);
END LOOP;
CLOSE c1;
END;
/
mais à quoi ça sert ????
Merci !!
En fait j'aurai une appli en jdbc et lorsque l'utilisateur voudra connaitre une info sur une ville j'appelerai la procedure avec le nom qu'il aura tapé, mais bon la ca sert pas à grand chose c'est juste pour avoir une idée de comment ca marche pour pouvoir faire des requetes plus intéressantes... Après je sais pas peut être (surement) qu'il y'a des manières plus intelligentes de faire çà mais je débute alors je n'ai pas toutes les cartes en main .
adonis_sakis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 10h38   #4
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
Salut... peux-tu essayé cela :

Code :
1
2
3
4
5
6
7
8
CREATE OR REPLACE PROCEDURE Vil(arg  Ville.nomVille%Type) IS 
BEGIN 
     dbms_output.enable(10000000);
     FOR cur IN (SELECT champ1,champ2,champ3 FROM Ville WHERE nomVille = arg) loop
           DBMS_OUTPUT.PUT_LINE(cur.champ1||'-'|| cur.champ2||'-'|| cur.champ3);
    END LOOP;
END;
/
Avant d'exécuter ta procédure, il faut faire SET SERVEROUTPUT ON;
LBO72.
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 10h46   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
pourquoi le PRAGMA AUTONOMOUS_TRANSACTION ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 11h09   #6
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
Question au grand MAITRE OraFrance

Ce que j'ai proposé ne marche peut-être qu'à partir de la version 10g ?

Merci.
LBO72
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 11h19   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
non, en 9i ça doit fonctionner aussi
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h17.


 
 
 
 
Partenaires

Hébergement Web