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 :

text, ntext et image sont interdits dans les variables locales


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 42
    Points : 37
    Points
    37
    Par défaut text, ntext et image sont interdits dans les variables locales
    Bonjour,

    Je voudrais stocker une trés impossante chaîne de caractères dans une des mes procédures stockées ou fonctions sous Sql Server 2000

    Le problème est que cette chaîne dépassera largement les 8000 caractères proposés par le varchar. Du coup, je m'étais rabattu vers les types de données text et ntext mais lors de l'exécution de la création de ma fonction, j'ai l'erreur suivante:

    Les types de données text, ntext et image sont interdits dans les variables locales.
    Comment faire pour stocker mes infos ?

    Merci d'avance

  2. #2
    Membre habitué Avatar de davestar
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2003
    Messages : 99
    Points : 125
    Points
    125
    Par défaut
    Bonjour,
    il sagit d un probleme bien connu en sql server et fort embettant, j espere que Yukon va corriger ca. Les fonctions ou procedures stockees n acceptent pas ce genre de parametres, il faut donc inserer les donnees directement par requette dans ton progamme.

    Bon courage
    @+
    --
    Cordialement
    David Verriere
    Mes articles techniques

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 42
    Points : 37
    Points
    37
    Par défaut
    il faut donc inserer les donnees directement par requette dans ton progamme.
    Peut-tu être un petit peu plus explicite sur ce sujet ?

    Je ne comprends pas

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Yukon (SQL Server 2005) ne résoud pas ce cas de figure, mais propose un palliatif en faisant passer la limite de varchar à 2G
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 42
    Points : 37
    Points
    37
    Par défaut
    Bref, aucune solution en vu. On ne peux rien manipuler de plus de 8000 caractères dans une procédure stockée ou une fonction ...

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    si, on peut manipuler, mais pas passer en paramètre.
    Par exemple, insérer le TEXT dans une table temporaire ayant un id, et passer l'id en paramètre à la SP.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  7. #7
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Hop,
    Je dépoussière ce vieux post pour avoir un peu plus d'infos. J'ai des paramètres qui font moins de 8000 caractères, cen'est donc pas là mon souci

    Mon souci, c'est qu'une fois exploité les paramètres, la requête à exécuter fait plus de 8000 caractères, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set @sql = ''
    set @sql =@sql + 'bla bla bla '
    exec (@sql)
    Et c'est donc @sql qui fait plus de 8000 caractères et que je ne peux donc pas exécuter telle quelle.

    Y a-t-il une solution ?

    Merci,
    Mindiell
    "Souvent, femme barrit" - Elephant man

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Possibilité
    Bonjour,

    Le post date, mais j'ajoute une réponse pour les suivants.

    Tu ne peux pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @sql varchar(12000) 
    SET @sql = ' ... '
    EXEC @sql
    Mais j'ai déjà vu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARE @sql1 varchar(4000) 
    DECLARE @sql2 varchar(4000) 
    DECLARE @sql3 varchar(4000) 
    SET @sql1 = '...'
    SET @sql2 = '...'
    SET @sql3 = '...'
    EXEC @sql1 + @sql2 + @sql3   -- C'est là qu'est l'astuce


    Cordialement,
    Emmanuel

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 698
    Points : 586
    Points
    586
    Par défaut
    et varchar(max) ? ça le fait pas ?

Discussions similaires

  1. ntext interdits dans les procédures et triggers.
    Par gregb34 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/06/2007, 17h58
  2. Remplissage de text box suivant la date insérée dans les tables
    Par porci82 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/06/2007, 13h59
  3. Réponses: 3
    Dernier message: 26/02/2007, 18h00
  4. Mes 700 images sont incluses dans ma table
    Par Coulognois dans le forum IHM
    Réponses: 2
    Dernier message: 13/01/2007, 15h41
  5. Réponses: 4
    Dernier message: 03/08/2005, 09h47

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