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

MS SQL Server Discussion :

appel de fonction sql server 2005


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Consultant SharePoint
    Inscrit en
    Mars 2006
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SharePoint
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 270
    Points : 308
    Points
    308
    Par défaut appel de fonction sql server 2005
    Salut.
    Je suis en train de travailler sur une fonction sous sql server 2005.
    En fait une de mes procédure stockées recoit une chaine de caracteres (les id de projets séparés par des virgules...puisque je ne peux pas passer de liste de int en params...).
    Cette procédure doit donc découper la chaine (split).
    Le pb c que je ne parviens pas a appeler la fonction...
    "Cannot find either column "dbo" or the user-defined function or aggregate "dbo.Split", or the name is ambiguous."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    ALTER FUNCTION [dbo].[Split](
       @PInStrSource varchar(8000) = NULL, @pInChrSeparator char(1) = ';'
     )
     RETURNS @ARRAY TABLE (ItemValue VARCHAR(1000))
    AS
    BEGIN
    DECLARE @CurrentStr varchar(2000)
    DECLARE @ItemStr varchar(200)
    SET @CurrentStr = @PInStrSource
    SET @PInStrSource = '1;2;3'
    WHILE Datalength(@CurrentStr) > 0
    BEGIN
        IF CHARINDEX(@pInChrSeparator, @CurrentStr,1) > 0 
        BEGIN
            SET @ItemStr = SUBSTRING (@CurrentStr, 1, CHARINDEX(@pInChrSeparator, @CurrentStr,1) - 1)
            SET @CurrentStr = SUBSTRING (@CurrentStr, CHARINDEX(@pInChrSeparator,
                @CurrentStr,1) + 1, (Datalength(@CurrentStr) - CHARINDEX(@pInChrSeparator, @CurrentStr,1) + 1))
            INSERT @ARRAY (ItemValue) VALUES (@ItemStr)
        END
        ELSE
        BEGIN                
            INSERT @ARRAY (ItemValue) VALUES (@CurrentStr)    
            BREAK;
        END 
    END
    RETURN
    END
    merci de votre aide!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    il te manque le @array après le return

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    ALTER FUNCTION [dbo].[Split](
       @PInStrSource varchar(8000) = NULL, @pInChrSeparator char(1) = ';'
     )
     RETURNS @ARRAY TABLE (ItemValue VARCHAR(1000))
    AS
    BEGIN
    DECLARE @CurrentStr varchar(2000)
    DECLARE @ItemStr varchar(200)
    SET @CurrentStr = @PInStrSource
    SET @PInStrSource = '1;2;3'
    WHILE Datalength(@CurrentStr) > 0
    BEGIN
        IF CHARINDEX(@pInChrSeparator, @CurrentStr,1) > 0 
        BEGIN
            SET @ItemStr = SUBSTRING (@CurrentStr, 1, CHARINDEX(@pInChrSeparator, @CurrentStr,1) - 1)
            SET @CurrentStr = SUBSTRING (@CurrentStr, CHARINDEX(@pInChrSeparator,
                @CurrentStr,1) + 1, (Datalength(@CurrentStr) - CHARINDEX(@pInChrSeparator, @CurrentStr,1) + 1))
            INSERT @ARRAY (ItemValue) VALUES (@ItemStr)
        END
        ELSE
        BEGIN                
            INSERT @ARRAY (ItemValue) VALUES (@CurrentStr)    
            BREAK;
        END 
    END
    RETURN @ARRAY 
    END

  3. #3
    Membre averti
    Homme Profil pro
    Consultant SharePoint
    Inscrit en
    Mars 2006
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SharePoint
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 270
    Points : 308
    Points
    308
    Par défaut
    Ben en fait j'ai deja testé, ce n'est pas ca non plus. apparemment ca viendrait d'un problème de droits sur la BD.... en fait j'ai remplacé cette fonction par une procédure stockée qui fonctionne. Merci de votre aide. +

Discussions similaires

  1. Appel d'une fonction dans une fonction (sql server 2005)
    Par catchouse dans le forum Développement
    Réponses: 10
    Dernier message: 06/05/2009, 12h03
  2. [SQL Server 2005] Fonction de partitionnement
    Par elsuket dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/04/2007, 18h39
  3. Faire appel à une BDD sql server 2005 express
    Par mrjay42 dans le forum Services Web
    Réponses: 2
    Dernier message: 04/02/2007, 15h53
  4. Réponses: 1
    Dernier message: 13/12/2006, 14h18
  5. [SQL SERVER 2005] Utilisation de Exec dans une fonction ?
    Par Dadou74 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/09/2006, 22h09

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