sql server 通过存储过程方式查询所有数据库的所有数据

根据传进来的数据库name查询该数据库的表、视图、函数、存储过程

create procedure st2(@name varchar(100))
AS
BEGIN
DECLARE @SQL varchar(1000)
    set @SQL='SELECT '''+@name+'''dbname,name ,type from '+@name+'..sysobjects where type in (''P'',''FN'',''U'',''V'')'
    exec(@SQL)
END

执行语句: exec st2 master

存储过程没报错,执行时中间出现的报错问题

在 sys.servers 中找不到服务器 'master'。请验证指定的服务器名称是否正确。如果需要,请执行存储过程 sp_addlinkedserver 以将服务器添加到 sys.servers。

是由于@name单引号不对

create procedure st4
AS
begin
create table #t(dbname varchar(1000),name varchar(1000),type varchar(1000))
declare @name varchar(1000)
declare rs cursor local scroll for select name from sysdatabases
open rs
fetch next from rs into @name
while @@FETCH_STATUS=0
BEGIN 
insert INTO #t exec st2 @name
fetch next from rs into @name
END
Close rs
select * from #t
end

执行方法:exec st4

中间出现的问题:将截断字符串或二进制数据

解决方法:把临时表定义的字段改大点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server存储过程是一组预编译的SQL语句集合,可以在数据库服务器上进行编译和存储,然后以一个单独的单元进行执行。存储过程可以在需要时被调用,并且可以接收输入参数并返回结果。通过使用存储过程,可以提供更高的性能和安全性,因为它们可以减少网络通信和SQL语句的解析时间。此外,存储过程还可以实现复杂的业务逻辑和数据处理操作。 存储过程可以通过使用SQL语言的各种功能和逻辑进行灵活的编写,如条件语句、循环、异常处理等。因此,存储过程可以用于执行复杂的数据操作和计算,从而提高数据库的效率和可靠性。 通过存储过程,可以将常用的数据操作逻辑封装在数据库中,使 #### 引用[.reference_title] - *1* *2* [SqlServer存储过程](https://blog.csdn.net/airu9101/article/details/101132253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [SqlServer存储过程详解](https://blog.csdn.net/weixin_55909413/article/details/114767079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值