Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur Cast retourné procédure pgSQL Integer[]

    23 mars 2020 à 9:47:54

    Bonjour,

    Voilà mon problème  j'ai une procédure stocké écris en plpgsql qui a pour paramètre une Integer[] , elle fonctionne bien lorsque je l'appelle depuis la base de donnée.

     DROP FUNCTION public."affecter"(integer[], text, timestamp with time zone);



    Mais lorsque je l’exécute dans mon programme C#, j'ai l'erreur suivante :

    "Le cast spécifié n'est pas valide."

    Je précise que je n'ai pas de problème avec les autres procStock . mais c'est la seul avec un Array en paramétré 

    du coté C# je le donne un int[].

    Mais je me suis aperçu que le xsd ma générer la fonction suivante:(BD.designer.cs)

    public virtual object affecter(object p_id, string p_utilisateur, global::System.Nullable<global::System.DateTime> p_datecongelation) {
                global::Devart.Data.PostgreSql.PgSqlCommand command = ((global::Devart.Data.PostgreSql.PgSqlCommand)(this.CommandCollection[181]));
                if ((p_id == null)) {
                    command.Parameters[0].Value = global::System.DBNull.Value;
                }
                else {
                    command.Parameters[0].Value = ((object)(p_id));
                }
                if ((p_utilisateur == null)) {
                    command.Parameters[1].Value = global::System.DBNull.Value;
                }
                else {
                    command.Parameters[1].Value = ((string)(p_utilisateur));
                }
                if ((p_datecongelation.HasValue == true)) {
                    command.Parameters[2].Value = ((System.DateTime)(p_datecongelation.Value));
                }
                else {
                    command.Parameters[2].Value = global::System.DBNull.Value;
                }
                global::System.Data.ConnectionState previousConnectionState = command.Connection.State;
                if (((command.Connection.State & global::System.Data.ConnectionState.Open) 
                            != global::System.Data.ConnectionState.Open)) {
                    command.Connection.Open();
                }
                object returnValue;
                try {
                    returnValue = command.ExecuteScalar();
                }
                finally {
                    if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
                        command.Connection.Close();
                    }
                }
                if (((returnValue == null) 
                            || (returnValue.GetType() == typeof(global::System.DBNull)))) {
                    return null;
                }
                else {
                    return ((object)(returnValue));
                }
            }
        }


    code BD.cs

    public static object affecter(int[] id, string utilisateur, DateTime? date)
            {
                using (Postgres_Affaire.AffaireTableAdapters.QueriesTableAdapter requeteur = new AffaireTableAdapters.QueriesTableAdapter())
                {
                    return requeteur.affecter(id, utilisateur, date);
                }
            }



    Alors ma question est comme puis-je faire appel ma procédure avec un en paramétré ?


    -
    Edité par DevInformk 23 mars 2020 à 10:18:03

    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2020 à 14:36:57

      >du coté C# je le donne un int[].

      Conceptuellement, un 'tableau" en base de données, c'est plus proche d'une liste que d'un tableau, en C#.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

      Erreur Cast retourné procédure pgSQL Integer[]

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown