sp_MSforeachdb的问题

csproj 2009-11-27 12:59:59
想得到所有包含tAscPrmUser表的数据库:
sp_MSforeachdb
'if object_id("tAscPrmUser","u") is not null
print "?"'

可总是调用当前数据库的object_id函数。 怎么调用指定数据库的object_id。
难道必须用select 1 from ?.sys.tables或 select 1 from ?.sysobjects



还有一个问题:
还有怎么将得到的数据库名称放到一个变量或者一个表中?
declare @dbname nvarchar(100)
exec sp_MSforeachdb 'if object_id("tAscPrmUser","u") is not null set @dbname = @dbname + "?"'
print @dbname

但是sp_MSforeachdb 的参数一并不能访问外部变量
...全文
206 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
csproj 2009-11-27
  • 打赏
  • 举报
回复
谢谢 perfectaction
就按你的方法,在tempdb里面建表,可惜没分了
nzperfect 2009-11-27
  • 打赏
  • 举报
回复

if object_id('tempdb.dbo.#','U') is not null drop table #
go
create table tempdb.dbo.#(dbname varchar(200))
go
sp_MSforeachdb 'use ? if object_id("tAscPrmUser","u") is not null
insert into tempdb.dbo.# select "?"
'
declare @dbname nvarchar(2000)
select @dbname=isnull(@dbname+',','')+dbname from tempdb.dbo.#
select @dbname
nzperfect 2009-11-27
  • 打赏
  • 举报
回复
create table tempdb.dbo.#(dbname varchar(200))
go
sp_MSforeachdb 'use ? if object_id("tAscPrmUser","u") is not null
insert into tempdb.dbo.# select "?"
'
declare @dbname nvarchar(2000)
select @dbname=isnull(@dbname+',','')+dbname from tempdb.dbo.#
select @dbname
drop table tempdb.dbo.#
csproj 2009-11-27
  • 打赏
  • 举报
回复
谢谢大家,结贴了
chuifengde 2009-11-27
  • 打赏
  • 举报
回复
use test 
go
CREATE TABLE t(a VARCHAR(200))
go
exec sp_msforeachdb 'use ? if object_id(''表'') is not null insert test.dbo.t select ''?'''
go
SELECT * FROM t
快乐_石头 2009-11-27
  • 打赏
  • 举报
回复
學習~~~
lweia 2009-11-27
  • 打赏
  • 举报
回复
EXEC sp_MSforeachdb @command1="if isnull(object_id('tabelname','u') ,0)=0 print '?'"
sp_helptext 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liangck 的回复:]
可以输出到表.
[/Quote]

这么多星星

liangCK 2009-11-27
  • 打赏
  • 举报
回复
可以输出到表.
sp_helptext 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liangck 的回复:]
第二个应该是不可以的.
[/Quote]
可以输出到表卡
--小F-- 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liangck 的回复:]
第二个应该是不可以的.
[/Quote]

。。。看来我还是不到家啊
--小F-- 2009-11-27
  • 打赏
  • 举报
回复
输出参数 
declare @num int, @sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)

--如何将exec执行结果放入变量中?

declare @num int, @sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
liangCK 2009-11-27
  • 打赏
  • 举报
回复
第二个应该是不可以的.
nzperfect 2009-11-27
  • 打赏
  • 举报
回复
sp_MSforeachdb 'use ? if object_id("T_1","u") is not null print "?"'
--小F-- 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiabiao113 的回复:]
谢谢 liangCK 试了好用
那第二个问题呢?
[/Quote]

动态语句
用sp_executesql输出参数
csproj 2009-11-27
  • 打赏
  • 举报
回复
谢谢 liangCK 试了好用
那第二个问题呢?
--小F-- 2009-11-27
  • 打赏
  • 举报
回复
什么意思
liangCK 2009-11-27
  • 打赏
  • 举报
回复
平时怎么写.在sp_msforeachdb里就怎么写.
sp_helptext 2009-11-27
  • 打赏
  • 举报
回复
可以输出到一个表里
liangCK 2009-11-27
  • 打赏
  • 举报
回复
sp_MSforeachdb
'use ?
if object_id("tAscPrmUser","u") is not null
print "?"'
加载更多回复(2)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧