2017-05-27 1 views
0

J'ai un morceau de code:variables sp_executesql

DECLARE @v int; 
DECLARE @SQLString nvarchar(500); 
DECLARE @ParmDefinition nvarchar(500); 
DECLARE @max_title varchar(30); 

SET @IntVariable = 197; 
SET @SQLString = N'SELECT @max_titleOUT = max(JobTitle) 
    FROM some_table 
    WHERE name = @level'; 
SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT'; 

EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @v, @[email protected]_title OUTPUT; 
SELECT @max_title; 

Je suis un peu confus au sujet de cette ligne:

 WHERE name = @level'; 

Si @v est une chaîne au lieu d'une variable int, devrait Je mets des citations autour de @level comme ça?

 WHERE name = ''@level'''; 

Quand dois-je mettre des guillemets autour d'une variable à l'intérieur du @SQLString?

Répondre

2

Non, @level et @v sont des variables. Vous ne devriez pas mettre des citations autour.

Quand dois-je mettre des guillemets autour d'une variable dans @SQLString?

Nulle part

+0

Même 'name' est nvarchar (...) type? En général, nous allons écrire des déclarations comme 'WHERE name = '...'', non? –

+0

@OgrishMan ne manquez pas, que '@ level' est une variable. Lorsque vous écrivez 'WHERE name = @ level' pas dans' sp_executesql 'vous ne mettez pas de guillemets, non? Donc, pas besoin de les mettre dans 'sp_executesql' – Backs

+0

Oh, oui! Merci pour l'explication. Je suis clair maintenant mais je ne sais pas pourquoi je me sens confus à ce sujet tout à l'heure. Merci encore! –