Bonjour,
comment faire la concaténation de deux variables pour former le nom d'une table sous transact sql?
Merci d'avance.
Bonjour,
comment faire la concaténation de deux variables pour former le nom d'une table sous transact sql?
Merci d'avance.
Avec + ou CONCAT
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Pouvez vous me dire qu'est ce qui ne marche pas dans ma requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from (select concat('TPaie',2017) )
Pour ce genre de besoin, vous ne pouvez pas utiliser CONCAT, il faut utiliser du SQL DYNAMIQUE
Cf. http://sheikyerbouti.developpez.com/execute_immediate/
Voila le code que j'utilise ,j'aimerai savoir comment je peux affecter le résultat qui s'affiche par print dans une variable pour l'utiliser comme nom d'une table .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 declare @vartp nvarchar(6) declare @varann nvarchar(4) declare @res nvarchar(10) set @vartp='TPaie' set @varann='2017' set @res=@vartp+@varann print(@res)
Bonjour,
Pour cela il te faudra, comme cela a été évoqué ci-dessus par escartefigue, utiliser le "SQL Dynamique"
Le lien indiqué ci-dessous traite du sujet mais les exemples utilisent principalement la syntaxe ORACLE.
Ici, nous somme sur le forum SQL Server. Pour SQL Server, il te faudra utiliser la procédure système sp_executesql.
Tu devras écrire quelque chose comme ceci :
Code 'SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 declare @vartp nvarchar(6) declare @varann nvarchar(4) declare @res nvarchar(10) declare @sqlStmt nvarchar(max); -- nouvelle ligbe (nouvelle variable à déclarer) set @vartp='TPaie' set @varann='2017' set @res=@vartp+@varann print(@res) set @sqlStmt = N'SELECT * FROM dbo.'+@res; -- nouvelle ligne EXECUTE sp_executesql @SqlStmt; -- nouvelle ligne
A+
Partager