cs_djerbino
Messages postés56Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention 2 novembre 2009
-
21 avril 2008 à 12:07
cs_djerbino
Messages postés56Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention 2 novembre 2009
-
22 avril 2008 à 11:40
bonjour je galere depuis pas mal de temp et je je compte sur votre aide
je suis entrain de realiser une procédure stocké sous oracle 9i mais jai un probleme dans la clause like
voici le code
/*********creation de la procédure(dans le console plsql)**************/
create or replace procedure d
(
nom IN varchar,
prenom OUT varchar,villa OUT varchar
)
is
BEGIN
SELECT adresse,ville INTO prenom,villa FROM touhami.client
WHERE nom_societe LIKE '%'+ nom +'%' ;
end;
jusqua la tous va bien et j'ai comme résultat procédure créé
mais dans l'appel je trouve aucun enregistrement par contre si
j'utilse cette ligne : WHERE nom_societe LIKE nom ; tous va bien mais
jai besoin de '%'
est ce que quelqu'un a une idée??
/*********appel de la procédure(dans le code behind)**************/
Dim MaChaineDeConnection As String "provider MSDAORA ; data source = recrut;User ID=touhami;Password=glmaster;Unicode=True"
Dim MaConnexion As New OleDbConnection(MaChaineDeConnection)
Dim MaRequete As String = "d"
Dim MaCommande As New OleDbCommand(MaRequete, MaConnexion)
MaCommande.CommandType = CommandType.StoredProcedure
Dim MonParametre, MonParametre1 As OleDbParameter
MonParametre = MaCommande.Parameters.Add("nom", OleDbType.VarChar, 100) 'defenir le premier variable d'entré
MonParametre.Value = "infoweb business services"
MonParametre = MaCommande.Parameters.Add("prenom", OleDbType.VarChar, 20) 'defenir le premier variable de sortie
MonParametre.Direction = ParameterDirection.Output
MonParametre1 = MaCommande.Parameters.Add("villa", OleDbType.VarChar, 20) 'defenir le deuxieme variable de sortie
MaConnexion.Open()
MaCommande.ExecuteNonQuery()
Response.Write((MonParametre.Value)) 'affiche la premiere variable
Response.Write((MonParametre1.Value)) 'affiche la deuxieme variable
MaConnexion.Close()
pour le premier cas j'ai les résultat affiché mais avec like '%' + nom +'%' sa me donne rien
d'apres mes recherche la clause like '%' + nom +'%' s'éxécute sous sql server mais c quoi son équivalent sous oracle 9 i
merci pour votre reponses
cs_djerbino
Messages postés56Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention 2 novembre 2009 22 avril 2008 à 10:16
merci j'apprécie vraiement ton aide
mais j'ai toujour le meme probleme
voici mon code complet
/****************corp de procédure**********************/
create or replace procedure recherche_simple_sans_ville
(
titre IN varchar,metier OUT varchar,objectif OUT varchar,region OUT varchar,ville OUT varchar,type_de_contrat OUT varchar,duree OUT varchar,qualification OUT varchar,langue OUT varchar,publication OUT varchar
)
is
BEGIN
SELECT metier,objectif,region,ville,type_de_contrat,duree,qualification,langue,publication INTO metier,objectif,region,ville,type_de_contrat,duree,qualification,langue,publication FROM touhami.cv
WHERE metier LIKE titre ;
end;
/**************code asp.net(vb.net) appel de procédure*********/
Dim
MaChaineDeConnection
As
String
"provider MSDAORA ; data source = recrut;User ID=touhami;Password=glmaster;Unicode=True"
Dim
MaConnexion
As
New
OleDbConnection(MaChaineDeConnection)
Dim
MaRequete
As
String
=
"recherche_simple_sans_ville"
Dim
MaCommande
As
New
OleDbCommand(MaRequete, MaConnexion)MaCommande.CommandType = CommandType.StoredProcedure
lorsque jai un seul enregistrement dans la table CV pas de probleme mais quand je possede plusieur enregistrement voici le message d'erreur qui s'affiche:
ORA-01422: l'extraction exacte ramène plus que le nombre de lignes demandé
ORA-06512: à "TOUHAMI.RECHERCHE_SIMPLE_SANS_VILLE", ligne 9
ORA-06512: à ligne 1
cs_djerbino
Messages postés56Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention 2 novembre 2009 22 avril 2008 à 11:40
bon j'ai trouvé la solution de cet erreur en modifiant ma procédure comme suit:(avec les rowtype)
create or replace procedure recherche_simple_sans_ville
(
titre IN varchar,resultat OUT cv%Rowtype
)
is
BEGIN
SELECT * INTO resultat FROM touhami.cv
WHERE metier LIKE titre ;
end;
mais j'ai un autre probleme lors de l'appel de cette procédure
le problème est dans la ligne suivante:
MonParametre2 = MaCommande.Parameters.Add("resultat", OleDbType.VarChar, 20)
qui a pour message d'erruer le suivant
ORA-06550: Ligne 1, colonne 7 :
PLS-00306: numéro ou types d'arguments erronés dans appel à 'RECHERCHE_SIMPLE_SANS_VILLE'
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored
Ce fournisseur ne prend pas en charge les procédures/fonctions stockées PL/SQL avec les arguments RECORD ou TABLE.