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 :

Lot DTS : variables globales


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut Lot DTS : variables globales
    Bonjour

    Je voudrais savoir s'il est possible, dans une "tâche d'exécution de requêtes SQL" d'un lot DTS, de récupérer les variables globales du lot ?

    Parce que là je suis obligée de passer d'abord par une procédure stockée (à qui je fournis mes paramètres) pour faire mes requêtes SQL, puis d'appeler mon lot pour faire mes transformations, alors qu'il serait plus simple pour moi de tout faire dans le lot.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Oui, si le provider accepte les requêtes paramétrées. Si c'est une connexion OLEDB, insère un ? pour indiquer que tu veux placer un paramètre.

  3. #3
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    Merci je vais regarder ce que ça donne

    Edit : super ça marche, merci !

    Pour plus de détails j'ai trouvé un exemple ici : http://www.aspfree.com/c/a/MS-SQL-Se...TS-Designer/1/

  4. #4
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    J'ai crié victoire trop vite. J'avais testé avec une requête simple, mais là ça ne marche plus avec ce que je veux faire.

    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
     
     
    -- Inserts all the DK to export in a temporary keys table.
     
    -- Temporary Table Creation
     
    IF exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DKP_DK_EXPORT_TMP]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[DKP_DK_EXPORT_TMP]
     
    CREATE TABLE DKP_DK_EXPORT_TMP
    ([CUSTOMER_CODE] [varchar] (36) NOT NULL,
    [EXTRACTION_DATE] [char] (6) NOT NULL,
    [OPE_RF_CODE] [varchar] (15) NOT NULL,
    [START_DATE] [char] (6) NOT NULL,
    [OPC_CODE] [varchar] (10) NULL,
    [DK_VALUE] [int] NULL)
     
    DECLARE @completeDate char(8)
    DECLARE @truncDate char(6)
     
    SET @completeDate = CONVERT(char(8), GETDATE(), 112)
    SET @truncDate = SUBSTRING(@completeDate, 3, 6)
     
     
    /* REAL CUSTOMERS, PHYSICAL ORIGIN */
     
    INSERT INTO DKP_DK_EXPORT_TMP
     
    SELECT DK_SET.CUSTOMER_CODE, @truncDate, DK_SET.OPE_RF_CODE, @truncDate, ITEMS.OPC_CODE, CUR.CURRENT_VALUE
     
    FROM DKP_DK_SET DK_SET, DKP_OPE_ITEMS ITEMS, DKP_DK_CURRENT CUR
    WHERE DK_SET.CONTINENT_CODE = ?
    AND DK_SET.CURRENT_ORIGIN_TYPE = 0 -- physical origin
     
    AND DK_SET.CUSTOMER_CODE IN
    (SELECT CUSTOMER_CODE FROM DKP_UF_CUSTOMERS CUSTOMERS
    WHERE CONTINENT_CODE = ?
    AND CUSTOMER_TYPE = 0) -- real customer
     
    AND DK_SET.LAST_OPE > 
    (SELECT DATE_VALUE
    FROM DKP_PROPERTIES
    WHERE PROPERTY_ID = 'LAST_DK_EXPORT_' + ?)
     
    AND ITEMS.OPE_RF_CODE = DK_SET.OPE_RF_CODE
    AND CUR.CONTINENT_CODE = ?
    AND CUR.CUSTOMER_CODE = DK_SET.CUSTOMER_CODE
    AND CUR.OPC_CODE = ITEMS.OPC_CODE
     
     
     
    /* REAL CUSTOMERS, VIRTUAL ORIGIN */
     
    INSERT INTO DKP_DK_EXPORT_TMP
     
    SELECT DK_SET.CUSTOMER_CODE, @truncDate, DK_SET.OPE_RF_CODE, @truncDate, ITEMS.OPC_CODE, CUR.CURRENT_VALUE
    FROM DKP_DK_SET DK_SET, DKP_UF_CUSTOMERS CUST, DKP_DK_CURRENT CUR, DKP_OPE_ITEMS ITEMS
    WHERE DK_SET.CONTINENT_CODE = ?
    AND DK_SET.CUSTOMER_CODE = CUST.CUSTOMER_CODE
    AND DK_SET.CURRENT_ORIGIN_TYPE = 1 -- virtual origin
     
    AND DK_SET.LAST_OPE > 
    (SELECT DATE_VALUE
    FROM DKP_PROPERTIES
    WHERE PROPERTY_ID = 'LAST_DK_EXPORT_' + ?)
     
    AND ITEMS.OPE_RF_CODE = DK_SET.OPE_RF_CODE
    AND CUR.CONTINENT_CODE = DK_SET.CONTINENT_CODE
    AND CUR.CUSTOMER_CODE = DK_SET.CURRENT_ORIGIN_CODE
    AND CUR.OPC_CODE = ITEMS.OPC_CODE
    AND CUST.CUSTOMER_TYPE = 0 -- real customer
    Images attachées Images attachées   

  5. #5
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Je n'ai pas pris le temps de lire toute la requête, mais si ta syntaxe est sujet, essaie de placer ton code dans une procédure stockée et d'envoyer le ? en paramètre. Parfois le parseur du DTS a des problèmes avec les requêtes trop complexes.

  6. #6
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    Visiblement le problème vient du faire que je déclare également des variables internes : si je mets mon

    DECLARE @continentCode varchar(4)

    avant ma requête, il m'affiche un message d'erreur.

    On dirait également qu'on ne peut pas utiliser de ? dans des sous requêtes (cf image jointe)
    Images attachées Images attachées  

  7. #7
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Donc : fais une procédure stockée. C'est de toute manière ce que je conseille fortement de faire dans tous les cas.

  8. #8
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    Bon alors j'ai appelé ma procédure stockée à partir de mon lot DTS mais j'ai toujours la même erreur

    C'est marrant, j'ai l'impression que ça marche une fois sur deux (je viens de retester avec un simple select, et ça ne fonctionne plus alors que hier soir ça passait)

    Edit : j'ai enlevé mes commentaires tout en haut de ma requête et ça marche

    Merci pour ton aide en tous cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/06/2011, 10h48
  2. Utiliser les variables dans un lot DTS
    Par miniquick dans le forum Développement
    Réponses: 1
    Dernier message: 03/06/2008, 13h04
  3. [VB.NET]DTS ET Variables Globales
    Par Franck2mars dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/05/2006, 09h26
  4. LOT DTS - nom de la table variable
    Par speed034 dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 21/02/2006, 10h20
  5. lots DTS et variables
    Par le_scrameustache dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/09/2004, 17h54

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