在有存储过程的数据库,可以根据传入的参数名(是一个数据库名),从其它的数据库中取表数据吗?

叶子哟 2004-08-27 02:03:39
在有存储过程的数据库,如何切换数据库?
如在一个数据库currdatabase中的存储过程myproc中,传入参数中有一个数据库的名称为@otherdata
我想在myproc中使用otherdata中的数据表
如下写不行:select * from @otherdata.tablename
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子哟 2004-08-27
  • 打赏
  • 举报
回复
非常感谢!
zjcxc 元老 2004-08-27
  • 打赏
  • 举报
回复
--测试:

select 当前数据库=db_name()
exec('use master
select 切换到的数据库=db_name()')

/*--测试结果

当前数据库
--------------------------
tempdb

(所影响的行数为 1 行)

切换到的数据库
--------------------------
master

--*/
zjcxc 元老 2004-08-27
  • 打赏
  • 举报
回复
exec('user ['+otherdata+']
select * from tablename')
haoK 2004-08-27
  • 打赏
  • 举报
回复
好像只能用拼sql的办法了
hisi 2004-08-27
  • 打赏
  • 举报
回复
declare @sql varchar(8000) ;
set @sql = 'select * from ' + @otherdata + '.dbo.tablename' ;
exec ( @sql ) ;

34,576

社区成员

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

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