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 :

[SQL SERVER 2008] Passer une variable à un requete.


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut [SQL SERVER 2008] Passer une variable à un requete.
    Bonjour,

    J'ai un petit soucis comme vous pouvez imaginer xD. Je récupère le résultat d'une première requête par une variable (@JOUR) puis j'utilise cette variable pour exécuter ma deuxième requête seulement ca marche pas ...

    Donc @JOUR reçoit LUNDI et quand j'exécute ma deuxième requête @SQL est égal à LUNDI alors que si j'exécute la deuxième requête en remplaçant @JOUR par LUNDI @SQL est égal à 1 et c'est le résultat attendu ...

    Donc je pense que je dois changer la deuxième requête en changeant la façon de passer la variable @JOUR mais je ne sais pas comment...

    Des idées ? Merci d'avance !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	DECLARE @JOUR varchar(32), @SQL varchar(128), @JOUR_ID INT, @CAL_ID INT
    	SET @CAL_ID=1
    	SET @JOUR_ID=1
    	SET @JOUR=(SELECT COL_NAME(OBJECT_ID('dbo.CAL_P'),@JOUR_ID))
    	SET @SQL=(SELECT @JOUR from CAL  inner join CAL_P on CAL.CAL_P_ID=CAL_P.CAL_P_ID where CAL_ID=1)
    	PRINT(@SQL)
    	IF @SQL IS NULL 
    		BEGIN 
    		   RAISERROR ('ERREUR de pondération', 16, 1)
    		   RETURN 
    		END 
    go

  2. #2
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Peux-tu poster le PRINT(@SQL) ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Vous partez dans la mauvaise direction...

    Vous ne pouvez spécifier dynamiquement le nom d'un objet dans un requete.

    De plus, je pense que vous avez un problème de modélisation...

    donnez nous la structure de vos tables, et expliquez-nous plus globalement ce que vous tentez de faire...

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @SQL=(SELECT @JOUR FROM CAL  INNER JOIN CAL_P ON CAL.CAL_P_ID=CAL_P.CAL_P_ID WHERE CAL_ID=1)

    Quand vous faite cela, @JOUR n'est pas considéré comme un nom de colonne, mais comme une variable, et sa valeur est renvoyée (Sauf si aucune ligne ne rempli la condition de filtre, dans ce cas @SQL sera a NULL)

    @zinzineti
    PRINT(@SQL) doit afficher "LUNDI"

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Oui, c'est le cas il affiche "LUNDI" mais comment je peux faire pour @JOUR soit considéré comme un nom de colonne ?

    j'ai CAL -> calendrier (CAL_ID, date de début, #CAL_P_ID,#CAL_TYPE_ID), CAL_P (lundi,mardi,mercredi,vendredi,samedi,dimanche,CAL_P_ID) -> Pondération des jours de mon calendrier, CAL_TYPE (CAL_TYPE_ID,LIBELLE) pour les types de calendrier (5jours, 3jours...)

    Donc mon calendrier possède une pondération et un type.

    j'ai une contrainte d'unicité sur le type du calendrier et la date de début.
    La somme des pondérations de la date max d'une type calendrier doit être supérieur à zéro.

    J'ai une table Task qui a #CAL_TYPE_ID, date de début, durée, une date de fin

    Quand je saisie une tache je doit définir la date de fin en fonction de la durée et de la pondération du calendrier le lundi = 1 ou 0.5 ou 2 ... idem pour les autres jours de la semaine. Si la date de fin est spécifiée alors c'est un forçage... Si on saisit la date de fin et la durée mais pas la date de début alors c'est pour avoir les date au plus tard et c'est presque le même raisonnement que pour la date de début et la durée

    Bien sûr une date de Task et une durée peut être à cheval sur plusieurs calendriers pour un TYPE renseigné lors de la saisie (Task qui a #CAL_TYPE_ID)

    merci pour votre aide

Discussions similaires

  1. [SP-2010] Sharepoint connexion a SQL server 2008 dans une page aspx
    Par kssillati dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 02/03/2011, 18h58
  2. Réponses: 2
    Dernier message: 06/02/2011, 03h05
  3. [web.xml]Accès d'un MS SQL server 2008 par une Servlet
    Par ArnoFr dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/07/2010, 09h19
  4. passer une variable dans ma requete SQL
    Par poulette3000 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/04/2008, 13h50
  5. passer une variable dans ma requete SQL
    Par poulette3000 dans le forum C#
    Réponses: 0
    Dernier message: 16/04/2008, 19h24

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