Bonjour,

je débute en oracle et j'ai une question qui peut vous paraitre simple mais je suis habitué à Access alors, je ne parviens pas à obtenir ce que je souhaite.

Je dispose d'une table client :

NumeroClient : Entier
NomClient : Varchar
PrenomClient : Varchar
AdresseClient : VarChar
FaxClient : Varchar
TelClient : VarChar

Sur le numero client, j'ai crée une sequence. Ensuit je dispose d'une fonction qui m'insere le client est et censé me renvoyer le nouveau numero client créé. Et c'est ici que je bloque :

Ceci fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE OR REPLACE FUNCTION I_client (
	nom IN varchar2, 
	prenom IN varchar2, 
	rs IN varchar2, 
	ad IN varchar2, 
	tel IN varchar2, 
	fax IN varchar2) return NUMBER IS
NOuveauNum number;
cpt integer;
BEGIN 
SELECT count(*) INTO cpt 
FROM client 
WHERE (NomClient = nom) AND (PrenomClient = prenom) and (AdClient=ad);
IF cpt <> 0 THEN 
RAISE_APPLICATION_ERROR(-20000,'ce enregistrement exite deja');
ELSE 
INSERT INTO Client (NomClient, PrenomClient, RaisonSociale, AdClient, TelClient, FaxClient) 
  VALUES (nom, prenom, rs, ad, tel, fax);
SELECT NoClient INTO NOuveauNum FROM Client
  WHERE Nomclient=nom and PrenomClient=prenom AND AdClient=ad;
END IF;
RETURN (NOuveauNum);
END;
Ce que je voudrais savoir c'est comment faire pour recuperer le numero client sans avoir à interoger à nouveau la base avec la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
SELECT NoClient INTO NOuveauNum FROM Client
  WHERE Nomclient=nom and PrenomClient=prenom AND AdClient=ad;
Est ce possible ?

D'avance