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 :

[TSQL] commande EXECUTE


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [TSQL] commande EXECUTE
    Bonjour,

    Je sollicite votre aide pour un problème avec la commande EXECUTE lors de l'écriture d'une procédure stockée. Voici un bout de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE PROCEDURE [dbo].[mt_addDataEntry]
        @idMetaRess varchar(200),
        @parameter int,
        @val text,
        @date datetime
    AS
    DECLARE
        @Var varchar(255)
    BEGIN
    ...
    EXECUTE('INSERT INTO ' + @Var + '(parameter, val, date) VALUES (' + @parameter + ', ' + @val + ', ' + @date + ');');
    ...
    L'exception provient de @date dans la commande EXECUTE :

    Unhandled Exception:
    The name "7" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted

    De plus, si je teste en enlevant le parametre @date, il me met l'erreur :

    Operand Clash type : int is incompatible with text

    Cette erreur concerne le parametre @date.
    De plus, le reste de la requete fonctionne sans probleme. De meme, si je fait un test sans utiliser la commande EXECUTE avec des valeurs par défaut, la commande INSERT fonctionne très bien également.
    En espérant avoir été assez clair dans mes explications.

    Merci

  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
    tu dois avoir un conflit de type données
    int is incompatible with text
    tu dois avoir un champ de type text et tu y insères un int

    pour la date, ce doit être un problème de format (YYYY/MM/DD)

    en dernier lieu, on ne mets jamais ( ) comme nom de champ un mot réservé

    val
    date

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    OK pour les conventions de nommage

    Par contre, j'ai tout vérifié et pourtant je ne trouve aucun probleme de typage. Par exemple, en paramètres :
    @idMetaRess => "56"
    @parameter => 87
    @val => "7"
    @date => "13/07/2007 00:00:00"

    Si cela peut t'aider, avant d'effectuer mon INSERT, je créé la table de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    EXECUTE ('CREATE TABLE [dbo].[' + @Var + '](
            [id] [int] IDENTITY(1,1) NOT NULL,
            [parameter] [int] NOT NULL,
            [val] [text] COLLATE French_CI_AS NULL,
            [date] [datetime] NOT NULL
        ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];');

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @idMetaRess => "56"
    @parameter => 87
    @val => "7"
    @date => "13/07/2007 00:00:00"
    les double-quote, c'est pour le post ou tu les mets vraiment ?

    essaie plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @idMetaRess => '56'
    @parameter => 87
    @val => '7'
    @date => '13/07/2007 00:00:00'

Discussions similaires

  1. lancement commande executable
    Par jolatouf dans le forum Langage
    Réponses: 15
    Dernier message: 13/08/2007, 12h15
  2. memoire des commandes executées
    Par pierre2410 dans le forum Oracle
    Réponses: 1
    Dernier message: 13/06/2007, 15h12
  3. commande execute ne compile pas
    Par Peter57 dans le forum C++Builder
    Réponses: 7
    Dernier message: 26/02/2007, 21h12
  4. Problème : Fonctions et commande Execute
    Par bubi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 11h01
  5. Command.Execute laisse le recordset ouvert
    Par Immobilis dans le forum ASP
    Réponses: 10
    Dernier message: 16/02/2005, 17h32

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