IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

Problème retour Decimal dans fonction scalaire


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut Problème retour Decimal dans fonction scalaire
    Bonsoir

    J'ai un petit soucis avec une fonction scalaire CLR, qui me retourne un type SqlDecimal.

    Sql Server semble ne considérer que les valeurs entières (c'est à dire que pour une valeur inférieure à 1, il me retourne 0 ou 1, et pour les valeurs supérieure à 1, il ne me retourne que la partie entiére).

    D'où ce problème peut il provenir ?

    précision : quand j'exécute la fonction depuis un programme client .Net "classique", les valeurs sont correctes.

    bien sur, le retour a été déclaré de type Decimal dans le CREATE FUNCTION.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bon, j'ai ramené le problème à sa plus simple expression en créant une fonction "bidon" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true, IsPrecise = true, SystemDataAccess = SystemDataAccessKind.None)]
    public static SqlDecimal FuncTestDecimal1()
    {
    return new SqlDecimal(0.5);
    }
    ensuite en déclarant la fonction comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE FUNCTION TESTDECIMAL1()
    RETURNS numeric
    AS EXTERNAL NAME TestAssembly.TestCLRScalarFunctions.FuncTestDecimal1;
    Que j'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select dbo.TESTDECIMAL1()
    Et j'obtiens : 1 ....



    A la réflexion le problème vient de la déclaration de la fonction dans Sql Server

    En effet, si je la déclare ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE FUNCTION TESTDECIMAL1()
    RETURNS numeric(10,2)
    AS EXTERNAL NAME TestAssembly.TestCLRScalarFunctions.FuncTestDecimal1;
    J'obtiens bien 0.5

    Bref, problème trivial ....

    Désolé ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de variables dans fonction
    Par Vanessa48 dans le forum Langage
    Réponses: 10
    Dernier message: 03/10/2011, 15h31
  2. Problème d'égalité dans fonction
    Par LKnight dans le forum MATLAB
    Réponses: 19
    Dernier message: 12/12/2007, 10h25
  3. Problème retour chariot dans un texte
    Par arnaud_verlaine dans le forum Flash
    Réponses: 2
    Dernier message: 30/08/2006, 22h06
  4. Problème retour chariot dans un fichier texte
    Par Redondo dans le forum Windows
    Réponses: 2
    Dernier message: 08/02/2006, 18h23
  5. Problème de date dans fonction utlisateur
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo