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.
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
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)

É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.
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 10, on prépare la déclaration dynamique du paramètre formel @RESU
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.