Salut,
Suis totalement novice sous Oracle et je suis confronté à un souci de requête dans laquelle je fais passer des paramètres (je n'utilise pas de procédure stockée).
A l'exécution de la requete j'obtiens une erreur ORA-01036 et je sèche....
Lorsque j'exécute la fonction ci après, si je ne fais pas passer de valeurs significative, elle s'execute sans problème..
Si par exemple, je fais passer une valeur dans auteur, là j'obtiens le message d'erreur.
A cela, je crois que sous Oracle, l'ordre de la définition des paramètres est important.. Est ce correct ?
Si vous pouviez m'éclairer sur ce montrueux problème.. ca serait super ;-)
Stan
Voici ma fonction
public static List<Contenu> GetListe(int categorieID,int rubriqueID,string auteur,int statut)
{
List<Contenu> tempList = null;
using (OracleConnection myConnection = new OracleConnection(Parametres.OraclePortail))
{
StringBuilder mySql = new StringBuilder();
mySql.Append("SELECT D.contenuID,C.categorieid,D.rubriqueID,D.typeID,D.titre,D.auteur,D.Dcreation,D.descriptif,D.Ddebut,D.Dfin,D.nblectures,D.vignette,D.fichier,D.statut, ");
mySql.Append("W.WidgetID, ");
mySql.Append("C.libelle as CategorieNom,R.libelle As RubriqueNom,D.IsWidget ");
mySql.Append("FROM T_CONTENUS D ");
mySql.Append("INNER JOIN T_RUB_CONT R ON R.rubriqueid=D.rubriqueid ");
mySql.Append("INNER JOIN T_CAT_CONT C ON C.categorieid=R.categorieid ");
mySql.Append("LEFT OUTER JOIN T_WIDGETS W ON W.WidgetKeyID=D.contenuid AND W.widgetKeyField='DOC' ");
mySql.Append("WHERE D.contenuID=D.contenuid ");
if (statut != 3) mySql.Append("AND D.statut=:statut ");
if (auteur != string.Empty) mySql.Append("AND D.auteur=:auteur ");
if (rubriqueID != 0)
{
mySql.Append("AND D.rubriqueID=:rubriqueid ");
}
else
{
if (categorieID != 0) mySql.Append("AND C.categorieid=:categorieid ");
}
mySql.Append("ORDER BY D.dcreation,D.titre DESC");
OracleCommand myCommand = new OracleCommand(mySql.ToString(), myConnection);
myCommand.CommandType = CommandType.Text;
myCommand.Parameters.Add("statut", statut);
myCommand.Parameters.Add("auteur", auteur);
myCommand.Parameters.Add("rubriqueID", rubriqueID);
myCommand.Parameters.Add("categorieID", categorieID);
myConnection.Open();
using (OracleDataReader myReader = myCommand.ExecuteReader())
{
if (myReader.HasRows)
{
tempList = new List<Contenu>();
while (myReader.Read())
{
tempList.Add(Charge(myReader, false));
}
}
myReader.Close();
}
myConnection.Close();
}
return tempList;
}