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 :

Le type image dans une procedure stockée


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Points : 102
    Points
    102
    Par défaut Le type image dans une procedure stockée
    Bonjour,

    J'ai un petit soucis dans ma procédure stockée

    Elle est chargée de me renvoyer la liste des photos en fonction de l'utilisateur


    Les photos sont stockées directement en base (type image)



    Hors le type image ne peut pas être stocké dans une variable, du coup ça devient difficilement utilisable en T-SQL.



    Toute idée est la bienvenue à savoir que je voudrai bien garder mon code indemne de toute requête directe sur la base.





    Msg 2739, Niveau 16, État 1, Procédure GetPhotoByIdStudent, Ligne 9

    Les types de données text, ntext et image sont interdits dans les variables locales.


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
     
     
    IF EXISTS 
     
    (SELECT name FROM sysobjects WHERE name = 'GetPhotoByIdStudent' AND type = 'TF')
     
    DROP FUNCTION GetPhotoByIdStudent
     
     
     
    GO
     
     
     
    /*****************************************************
     
    *
     
    * Procédure prévue pour retourner une liste de photos
     
    * Ne renvera que une ou zéro photo pour le moment
     
    * 
     
    ******************************************************/
     
     
     
     
     
    CREATE FUNCTION dbo.GetPhotoByIdStudent(@IdStudent UniqueIdentifier) 
     
     
     
    RETURNS @Photo TABLE 
     
    (
     
          Id                      int,
     
          [Name]                  Varchar(50),
     
          Description             Varchar(250),
     
          [File]                  Image,  
     
          Tag                     Varchar(250)      
     
    )
     
     
     
    AS
     
     
     
    BEGIN
     
     
     
    DECLARE     @Id               int;
     
    DECLARE     @Name             Varchar(50);      
     
    DECLARE     @Description      Varchar(250);
     
    DECLARE     @File             Image;      
     
    DECLARE     @Tag              Varchar(250);
     
     
     
     
     
    DECLARE Photo_Cursor CURSOR FOR 
     
          SELECT 
     
                dbo.Photo.Id,
     
                dbo.Photo.[Name],
     
                dbo.Photo.Description,
     
                dbo.Photo.[File],
     
                dbo.Photo.Tag
     
          FROM         
     
                dbo.Photo WHERE dbo.Photo.FkIdUser = @IdStudent
     
     
     
    OPEN Photo_Cursor
     
     
     
    FETCH NEXT FROM Photo_Cursor
     
          INTO 
     
                @Id,                    
     
                @Name,                  
     
                @Description,                
     
                @File,            
     
                @Tag
     
     
     
    WHILE @@FETCH_STATUS = 0
     
    BEGIN
     
     
     
    INSERT INTO @Photo 
     
    (
     
          Id,                     
     
          [Name],           
     
          Description,                 
     
          [File],           
     
          Tag
     
    )
     
    VALUES
     
    (
     
                @Id,                    
     
                @Name,                  
     
                @Description,                
     
                @File,            
     
                @Tag
     
    )     
     
     
     
     
     
    FETCH NEXT FROM Photo_Cursor
     
          INTO 
     
                @Id,                    
     
                @Name,                  
     
                @Description,                
     
                @File,            
     
                @Tag
     
    END
     
    CLOSE Photo_Cursor
     
    DEALLOCATE Photo_Cursor
     
     
     
    RETURN 
     
     
     
    END
     
     
     
    GO
     
     
     
    -- SELECT * FROM GetPhotoByIdStudent()

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Vous ne pouvez manipuler des données de types BLOB qu'avec des pointeurs et à travers les méthodes READTEXT, WRITETEXT et UPDATETEXT.

    Il n'y a pas d'intérêt à manipuler globalement dans des requêtes SQL les Blobs. En effet allez vous faire des requêtes du genre :
    "chercher une image dans lequel il y a un chien jaune qui fume la pipe..."
    Donc, modifiez votre façon de faire.

    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/stockerimages/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Type complexe en parametre dans une procedure stockée
    Par Tsimplice dans le forum Oracle
    Réponses: 2
    Dernier message: 06/10/2005, 02h42
  2. Réponses: 6
    Dernier message: 24/09/2004, 13h10
  3. Réponses: 3
    Dernier message: 21/09/2004, 07h35
  4. Réponses: 6
    Dernier message: 05/08/2004, 13h15
  5. Probleme dans une procedure stockée
    Par malbaladejo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/07/2004, 14h08

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