Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 07/03/2007, 12h39   #1
Membre actif
 
Inscription : juin 2006
Messages : 257
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : juin 2006
Messages : 257
Points : 158
Points : 158
Par défaut Procédures stockées : syntaxe

Bonjour,
je voulais savoir si quelqu'un pouvait me montrer la syntaxe des procédures stockées sous Oracle, je connais sous SQL Server, mais sous Oracle j'ai quelques soucis parfois

un exemple comme celui-ci pour SQL Server
Code :
1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE PROC_Nom
@parametre son_type,
@parametre son_type,
@parametre son_type,
AS 
 DECLARE @ma_variable son_type
 
 SELECT nom_champs
 FROM ma_table
 WHERE condition
merci
marcusien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 12h41   #2
Membre du Club
 
Inscription : novembre 2005
Messages : 144
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 144
Points : 59
Points : 59
bonjour, voila :

http://sheikyerbouti.developpez.com/pl_sql/?page=Chap4
coco-sup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 12h43   #3
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
CREATE OR REPLACE PROCEDURE P_NOM_PROC IS

--Declaration des variables



BEGIN

SELECT ...


END P_NOM_PROC;
/
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 12h57   #4
Membre actif
 
Inscription : juin 2006
Messages : 257
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : juin 2006
Messages : 257
Points : 158
Points : 158
oui....ben moi j'ai ca dans ma procédure stockée et il me dit que ca va pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE PROCEDURE SELECTSOR
(appelantInt IN NUMBER,
dateAppel IN VARCHAR2,
heureAppel IN VARCHAR2)
IS
BEGIN
  SELECT NUMSOR 
  FROM XSOR 
  WHERE ENVSOR =  appelantInt
  AND DATESOR =  "dateAppel"
  AND HEURSOR =  "heureAppel"
END SELECTSOR;
/
marcusien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h09   #5
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Essaye ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
CREATE PROCEDURE SELECTSOR (appelantInt IN NUMBER,
dateAppel IN VARCHAR2,
heureAppel IN VARCHAR2)
IS
BEGIN
  SELECT NUMSOR 
  FROM XSOR 
  WHERE ENVSOR =  appelantInt
  AND DATESOR =  "dateAppel"
  AND HEURSOR =  "heureAppel";
END SELECTSOR;
/
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h10   #6
Membre actif
 
Inscription : juin 2006
Messages : 257
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : juin 2006
Messages : 257
Points : 158
Points : 158
eh bien apparemment il ne me fait plus l'erreur, mais personne ne donne la meme syntaxe, vous donnez tous des éléments faux a chaque fois ^^ donc c'est chaud

ma procédure
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE PROCEDURE SELECTSOR
(appelantInt IN NUMBER,
dateAppel IN VARCHAR2,
heureAppel IN VARCHAR2)
IS
BEGIN
  SELECT NUMSOR 
  FROM XSOR 
  WHERE ENVSOR =  appelantInt
  AND DATESOR =  "dateAppel"
  AND HEURSOR =  "heureAppel";
END SELECTSOR;
merci à vous deux

EDIT : il me jetais si je met "/" à la fin de la procédure. ^^
marcusien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h13   #7
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Citation:
eh bien apparemment il ne me fait plus l'erreur, mais personne ne donne la meme syntaxe, vous donnez tous des éléments faux a chaque fois ^^ donc c'est chaud
Peux-tu nous dire ce qu'il y a de faux dans ce que l'on t'a donné ?

Visiblement, la réponse te convient,non?
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h14   #8
Membre actif
 
Inscription : juin 2006
Messages : 257
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : juin 2006
Messages : 257
Points : 158
Points : 158
eh bien, le "/" c'etait pas bon, ensuite y a un site où ils mettent des ";" là où il faut pas, un IS avant les déclarations des parametres...

Hey je critique pas ;-)
marcusien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h17   #9
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Pense à ajouter , ca t'évitera de dropper et de recréer ta proc à chaque modif :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
CREATE OR REPLACE PROCEDURE SELECTSOR (appelantInt IN NUMBER,
dateAppel IN VARCHAR2,
heureAppel IN VARCHAR2)
IS
BEGIN
  SELECT NUMSOR 
  FROM XSOR 
  WHERE ENVSOR =  appelantInt
  AND DATESOR =  "dateAppel"
  AND HEURSOR =  "heureAppel";
END SELECTSOR;
/
Et pense à gèrer les exceptions, par exemple si ton SELECT ne te retourne aucune ligne.

davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h19   #10
Membre actif
 
Inscription : juin 2006
Messages : 257
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : juin 2006
Messages : 257
Points : 158
Points : 158
ah d'accord, moi je pensais que le replace on le mettait que quand on voulais faire un "alter" en gros.

dans SQL server on fait une fois CREATE, et après c'est que ALTER ^^

par contre, j'ai ca maintenant
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE PROCEDURE SELECTSOR
(appelantInt IN NUMBER,
dateAppel IN VARCHAR2,
heureAppel IN VARCHAR2)
IS
BEGIN
  SELECT NUMSOR 
  FROM XSOR 
  WHERE ENVSOR =  appelantInt
  AND DATESOR =  dateAppel
  AND HEURSOR =  heureAppel;
END SELECTSOR;
et il me dit qu'il faut une clause INTO dans mon SELECT
An INTO clause is expected in this SELECT statement
marcusien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h22   #11
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Sous Oracle, tu fais une fois pour toute
Code :
CREATE OR REPLACE PROCEDURE
et c'est ok !!!

Eh oui... tu en fais quoi de la valeur de numsor que tu récupères?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
CREATE OR REPLACE PROCEDURE SELECTSOR (appelantInt IN NUMBER,
dateAppel IN VARCHAR2,
heureAppel IN VARCHAR2)
IS
 
Ora_numsor	xsor.numsor%TYPE;
 
BEGIN
 
   BEGIN
     SELECT  NUMSOR 
       INTO  Ora_numsor
       FROM  XSOR 
      WHERE  ENVSOR =  appelantInt
        AND  DATESOR =  "dateAppel"
        AND  HEURSOR =  "heureAppel";
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
        Ora_numsor = 'TOTO';
   END;
 
END SELECTSOR;
/
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h33   #12
Membre actif
 
Inscription : juin 2006
Messages : 257
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations forums :
Inscription : juin 2006
Messages : 257
Points : 158
Points : 158
je te remercie beaucoup msieu ^^

aider un noob d'oracle je préfère quand meme SQL Server

je vais essayer de me debrouiller seul pour la suite, ca marche pour le moment ^^
marcusien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 13h39   #13
Membre du Club
 
Inscription : juillet 2006
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Maroc

Informations forums :
Inscription : juillet 2006
Messages : 58
Points : 41
Points : 41
1)Avant de créer une procédure stocké tu dois exécuter le script DBMSSTDX.SQL en tant que SYS
2) tu dois avoir le privielège CREATE PROCEDURE ou CREATE ANY PROCEDURE
et pour que tu puisse modifier une procédure: ALTER ANY PROCEDURE

on utilise la syntax CREATE [OR REPLACE] PROCEDURE schema.nom_procedure

ex:

CREATE PROCEDURE supprimer_employe (ID_Emp NUMBER) AS
total_emp NUMBER;
BEGIN
DELETE FROM employes
WHERE Table_employes.ID_Emp= supprimer_employe.ID_Emp ;
total_emp:= total_emp- 1;
END;

Cette procédure supprime l'employé spécifié par ID_Emp, elle utilise DELETE pour supprimer la ligne correpondante à ID_Emp
Abdelkabir est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h48.


 
 
 
 
Partenaires

Hébergement Web