这是针对MS 2005的:谁知道第一个成功的原因,然后连续创建两个相同的语句失败?所有的陈述都完全一样。将双引号改为两个单引号具有相同的效果。
sp
_MSforeachdb @command1 1= 'if (左(“?”,2) = "p_")开始;打印"?"; 产生 p_NationalBrands p_NonBrand p_Database_Name_That_Begins_With_P_Underbar
但
sp
_MSforeachdb @command1 1= 'if (左(“?”,2) = "p_")开始;打印"?"; sp_MSforeachdb @command1 1= 'if (左(“?”,2) = "p_")开始;打印"?"; 产生 Msg 102,级别15,状态1,第2行语法不正确,靠近'sp_MSforeachdb‘。
发布于 2009-04-11 08:50:15
同一个批中存储的多个proc调用,每个调用都需要EXEC(UTE)
EXEC sp_MSforeachdb @command1 = 'if (left(''?'', 2) = ''p_'') begin; print ''?''; end;';
EXEC sp_MSforeachdb @command1 = 'if (left(''?'', 2) = ''p_'') begin; print ''?''; end;';我总是使用2倍单引号而不是双引号来避免QUOTED_IDENTIFERS环境设置的问题。
发布于 2009-04-10 22:30:58
在以这种方式调用多个proc时,需要显式地使用Exec,请尝试
sp_MSforeachdb @command1 = 'if (left("?", 2) = "p_") begin; print "?"; end;';
exec sp_MSforeachdb @command1 ='if(left("?", 2) = "p_") begin; print "?"; end;';来自执行的文档
对存储过程使用EXECUTE 当语句是批处理中的第一个语句时,您不必在执行存储过程时指定EXECUTE关键字。
https://stackoverflow.com/questions/738914
复制相似问题