变量

2017-05-27 24 views
0

我有一段代码:变量

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; 

我有点困惑这一行:

 WHERE name = @level'; 

如果@v是一个字符串,而不是一个int可变的,应我把这样的报价放在@level左右?

 WHERE name = ''@level'''; 

什么时候应该在@SQLString里面加上引号?

回答

2

不,@level@v是变量。你不应该引用报价。

什么时候应该把引号放在@SQLString里面的变量中?

无处

+0

即使'name'是为nvarchar(...)类型?通常我们会写'WHERE name ='...'等语句,对吗? –

+0

@Orishman不要错过,那'@ level'是一个变量。当你写'WHERE name = @ level'不在'sp_executesql'中时,你不用加引号,对吧?所以,不需要把它们放在'sp_executesql' – Backs

+0

哦,是的!谢谢你的解释。我现在很清楚,但我不知道为什么我现在对此感到困惑。再次感谢! –