Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
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 16/04/2008, 12h13   #1
Invité régulier
 
Inscription : mars 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 14
Points : 8
Points : 8
Par défaut C# et Procédure stockée

Bonjour,

J'essaye de récuperer le resultat d'une procédure stockée dans un dataset.

Mon code C#:
Code C# :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
//Dans le constructeur de la classe:
odbcCo = new SQL.OdbcConnection( stringCo );
 
public override D.DataSet ExecuteProcedure(string nomDB, string nomProc)
{
   D.DataSet ds = new D.DataSet();
   try
   {
      SQL.OdbcCommand commande = new SQL.OdbcCommand(nomDB,odbcCo);
      commande.CommandType = D.CommandType.StoredProcedure;
      odbcCo.Open();
      SQL.OdbcDataAdapter da = new SQL.OdbcDataAdapter( commande );
      da.Fill( ds );
   }
   catch( Exception ex )
   {
      string msg = ex.ToString();
      ds = null;
   }
   finally
   {
      odbcCo.Close();
   }
   return ds;
}

Ma chaine de connexion est de type:
Citation:
Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=NomServeur;Database=NomServeur:E:\Bases\MaBase.GDB;Uid=Login;Pwd=MDP
Une execution me donne dans le message que je catch:
Citation:
{"ERROR [37000] [INTERSOLV][ODBC InterBase driver][InterBase]Dynamic SQL Error, SQL error code = -104, Token unknown - line 1, char 1, MaBase" }
Et pour finir ma procédure stockée:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE PROCEDURE GET_OPERATEUR 
RETURNS (
    ID_OP VARCHAR(20) CHARACTER SET NONE,
    ID_ASSOCIATION VARCHAR(10) CHARACTER SET NONE,
    SOCIETE VARCHAR(80) CHARACTER SET NONE)
AS
BEGIN
FOR
  SELECT ID AS ID_OP, ID_ASSOCIATION AS ID_ASSO, SOCIETE
  FROM OPERATEUR
  INTO :ID_OP, :ID_ASSOCIATION, :SOCIETE
DO SUSPEND;
END
Je me bat avec ca depuis plus de 3 jours je vais craquer
Si quelqu'un a la moindre piste je suis preneur.
Nonold est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h17   #2
Invité régulier
 
Inscription : mars 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 14
Points : 8
Points : 8
Je me suis lancé ici car j'été en train de fouiller le forum.
Mais la section c# serait peut être plus approprié
Nonold est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h30   #3
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
deux remarques :
1/ une procédure stokée renvoyant un resultat s'utilise comme une vue ou une table, donc à mon avis le
Code :
D.CommandType.StoredProcedure
n'est pas approprié

2/ quelle idée d'utiliser ODBC
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h44   #4
Invité régulier
 
Inscription : mars 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 14
Points : 8
Points : 8
J'ai essayé en mettant cette ligne en commentaire deja, ca change strictement rien.

J'ai remplacé le nom de la procedure par : EXECUTE PROCEDURE GET_OPERATEUR
Et je me retrouve avec ca :
Citation:
{"ERROR [42S02] [INTERSOLV][ODBC InterBase driver][InterBase]Dynamic SQL Error, SQL error code = -204, Table unknown, GET_OPERATEUR, At line 1, column 19." }
Pour l'ODBC, je vais essayé de fouiller un peu voir si je peux avoir une classe me permettant de me connecter autrement.
Nonold est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 12h57   #5
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
pas execute !
Code :
SELECT * FROM GET_OPERATEUR
lis ce que j'ai écris
quand au connecteur, Firebird a un pilote natif dotnet
http://www.firebirdsql.org/index.php...ub=netprovider
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 14h41   #6
Invité régulier
 
Inscription : mars 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 14
Points : 8
Points : 8
Je vais voir du cote du connecteur natif car meme en requete classique j'ai l'erreur de table.

Simple curiosité, en utilisant la procédure ainsi si elle a besoin de parametre on lui donne comment ?
Nonold est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 18h35   #7
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Code :
SELECT * FROM GET_OPERATEUR(monparam)
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 10h47   #8
Invité régulier
 
Inscription : mars 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 14
Points : 8
Points : 8
AdoNet c'est bien mangez en.

Bon ca passe super MERCI !
Nonold est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 15h38   #9
Invité régulier
 
Inscription : mars 2005
Messages : 14
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 14
Points : 8
Points : 8
Bon ba ya encore des soucis ^^
mais a force ca passera .. peut être ... un jour

L'autre procedure donne ca, la nouveaute c'est le parametre.
Code :
1
2
3
 
CREATE PROCEDURE GET_ECARTS (PSTATUT VARCHAR(50) CHARACTER SET NONE)
RETURNS ( ...
Je rajoute le parametre a mon objet commande:
Code :
1
2
3
4
5
6
7
 
p.valeur = ParameterAdapter(filtre, p.valeur);
// Premiere methode
// FbParameter parameter = new FbParameter(p.nom, p.valeur);
// commande.Parameters.ADD(parameter);
// Une autre
commande.Parameters.AddWithValue(p.nom, p.valeur);
P.nom vaut bien PSTATUT et p.valeur "Non levé" (La chaine que je souhaite passer)

et j'ai un jolie : {"Dynamic SQL Error\r\nInput parameter mismatch for procedure GET_ECARTS"}

SELECT * FROM GET_ECARTS('Non levé') dans IBexpert fonctionne tres bien.
Nonold 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 15h33.


 
 
 
 
Partenaires

Hébergement Web