首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sp_MSforeachdb MS错误

sp_MSforeachdb MS错误
EN

Stack Overflow用户
提问于 2009-04-10 21:23:17
回答 2查看 1.4K关注 0票数 0

这是针对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‘。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-11 08:50:15

同一个批中存储的多个proc调用,每个调用都需要EXEC(UTE)

代码语言:javascript
复制
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环境设置的问题。

票数 1
EN

Stack Overflow用户

发布于 2009-04-10 22:30:58

在以这种方式调用多个proc时,需要显式地使用Exec,请尝试

代码语言:javascript
复制
sp_MSforeachdb @command1 = 'if (left("?", 2) = "p_") begin; print "?"; end;';
exec sp_MSforeachdb @command1 ='if(left("?", 2) = "p_") begin; print "?"; end;';

来自执行的文档

对存储过程使用EXECUTE 当语句是批处理中的第一个语句时,您不必在执行存储过程时指定EXECUTE关键字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/738914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档