none
dynamic query RRS feed

  • Question

  • Bonjour,

    j'essaie de faire une requête dynamic avec des input et des output. mais ça me donne un message d'erreur pourtant si je teste la requête avec des parametres directement ça me retourne l'ensemble des colonnes concaténer .

    quelqu'un à une idée de la source du problème

    declare @sqltablecmd nvarchar(max);
    declare @tablename varchar(max);
    declare @listcolonne varchar(max);
    declare @wheredate varchar(max);
    DECLARE @Name varchar(100)
    set @wheredate = ' for xml path('''')'
    
    set @sqltablecmd ='SELECT @listcolonne = c.COLUMN_NAME+'','' as [text()]
    FROM  @base_prod.INFORMATION_SCHEMA.COLUMNS c 
    INNER JOIN  @base_prod.INFORMATION_SCHEMA.TABLES t 
    ON c.TABLE_NAME = t.TABLE_NAME
    AND c.TABLE_CATALOG = t.TABLE_CATALOG
    AND c.TABLE_SCHEMA = t.TABLE_SCHEMA
    INNER JOIN sys.types typ
    ON c.DATA_TYPE = typ.name
    WHERE c.TABLE_NAME =''@tablename'' @wheredate'
    
    EXEC sp_executesql @sqltablecmd, N'@base_prod VARCHAR , @tablename VARCHAR ,  @wheredate VARCHAR ,  @listcolonne VARCHAR OUT',@base_prod,@tablename,@wheredate,@listcolonne  OUT ;
    
    

    Msg 156, Niveau 15, État 1, Ligne 3
    Syntaxe incorrecte vers le mot clé 'as'.

    mardi 12 octobre 2021 13:37

Toutes les réponses

  • Bonjour,

    Quelle est la fonctionnalité souhaitée de la ligne suivante :
    'SELECT @listcolumn = c.COLUMN_NAME +' ',' 'as [text ()]

    +'','' semble inutile et les parenthèses dans [text()] aussi.

    Corrialement,

    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.


    mardi 12 octobre 2021 15:54
    Modérateur
  • Je souhaite récuperer tout les colonne concatener dans une seule ligne avec ',' comme sépérateur et enregistrer le résultat dans la variable @listcolumn .

    par exemple si j'execute cette requête ça donne le résultat dans l'image 1

    SELECT c.COLUMN_NAME+',' as [text()]
    FROM  Journalier.INFORMATION_SCHEMA.COLUMNS c 
    INNER JOIN  Journalier.INFORMATION_SCHEMA.TABLES t
    ON c.TABLE_NAME = t.TABLE_NAME
    AND c.TABLE_CATALOG = t.TABLE_CATALOG
    AND c.TABLE_SCHEMA = t.TABLE_SCHEMA
    INNER JOIN sys.types typ
    ON c.DATA_TYPE = typ.name
    WHERE c.TABLE_NAME ='ACTEUR' for xml path('')

    mardi 12 octobre 2021 16:10