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
里面加上引号?
即使'name'是为nvarchar(...)类型?通常我们会写'WHERE name ='...'等语句,对吗? –
@Orishman不要错过,那'@ level'是一个变量。当你写'WHERE name = @ level'不在'sp_executesql'中时,你不用加引号,对吧?所以,不需要把它们放在'sp_executesql' – Backs
哦,是的!谢谢你的解释。我现在很清楚,但我不知道为什么我现在对此感到困惑。再次感谢! –