Bonjour,
Je m'interroge à propos des paramètres formels et leur gestion par T-SQL, dans l'exemple ci-dessous je ne comprends pas vraiment pourquoi @RESU est considéré comme un paramètre formel. Je pensais en effet que les paramètes formels étaient utilisés dans les fonctions et les procédures. Pouvez-vous m'apporter un peu de lumière sur ce sujet qui demeure bien obscur à mes yeux.
A la ligne 4, il ne s'agit pas d'une déclaration dynamique d'une variable mais d'une déclaration dynamique d'un paramètre formel ( notez la présence du OUTPUT)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1 SET @pRESU = '' 2 SET @nIdEnreg = '1' 3 SET @nomdesignation = 'Designation' 4 SET @Para = N' @RESU nvarchar(4000) OUTPUT ' 5 SET @SQL = N'SET @RESU = (SELECT ' + @nomdesignation + ' FROM dbo.Correspondance WHERE id_corresp=' + @nIdEnreg + ')' 6 EXEC sp_executesql @SQL, @Para, @RESU = @pRESU OUTPUT
Édité : Je reste bloqué sur une série d'instructions, si je n'arrive pas à comprendre leur signification je ne pourrais pas analyser correctement le reste du code.
A la ligne 10, on prépare la déclaration dynamique du paramètre formel @RESU
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 1 DECLARE @SQL nvarchar(100) 2 DECLARE @nomdesignation nvarchar(90) 3 DECLARE @nIdEnreg nvarchar(90) 4 DECLARE @Para nvarchar(450) 5 DECLARE @pRESU nvarchar(300) 6 7 SET @pRESU = '' 8 SET @nIdEnreg = '1' 9 SET @nomdesignation = 'Designation' 10 SET @Para = N' @RESU nvarchar(4000) OUTPUT ' 11 SET @SQL = N'SELECT @RESU = ' + @nomdesignation + ' FROM dbo.Correspondance WHERE id_corresp=' + @nIdEnreg 12 exec sp_executesql @SQL, @Para, @RESU = @pRESU OUTPUT
A la ligne 11, on met en place l'initialisation dynamique de @RESU
A la ligne 12, on lance les conversions de @Para et @SQL, mais je ne comprends pas l'opération qu'exécute de sp_ExecuteSQL pour @RESU et @pRESU. De plus, comment se fait-il que @pRESU soit déclaré une seconde fois comme paramètre de sortie ? Pouvez-vous m'apporter de l'aide, merci.
Partager