proc 问题

everglow 2013-05-22 04:58:22
存储过程中是否可以切换到另外一个数据库?

例如:
use test
go
create procedure dbo.m
as
begin
use test
select 1
use new
select 2
end

说明:
1.上面的代码是错误的
2.存储过程本身在库(test)中
3.要求存储过程中的代码一部分在库(test)中执行,如:select 1;一部分代码在库(new)中执行,如:select 2
4.要怎么实现?还请贴出代码来给个例子(如果不支持那就算了)

不好意思,没多少分了,给的少还请多谅解
...全文
184 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
shmilylove 2013-05-23
  • 打赏
  • 举报
回复
这个可以吗?
chuifengde 2013-05-23
  • 打赏
  • 举报
回复
master.dbo.xp_execresultset N'create proc[table|trigger]...','dbname'
HAPPENS 2013-05-22
  • 打赏
  • 举报
回复
貌似不可以.
everglow 2013-05-22
  • 打赏
  • 举报
回复
exec (' USE WMS create procedure E1 as begin select 2 end') 这个是可以 但是exec (' USE WMS create trigger E1 on dbo.m after insert as begin select 2 end')这个是不可以的
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复
引用 11 楼 ZaoLianBuXiQi 的回复:

--这样好像可以
create procedure cssd
as
begin
exec (' USE WMS create procedure E1 as begin select 2 end')
end
不行,还是不勉强啦
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复

--这样好像可以
create procedure cssd
as
begin
exec (' USE WMS create procedure E1 as begin select 2 end')
end
everglow 2013-05-22
  • 打赏
  • 举报
回复
dbo.m是new库中的表 create trigger [dbo].[tr_m] on [dbo].[m] after insert as begin set NOCOUNT ON; declare @min int,@max int,@sql nvarchar(4000) set @min=1 select @max=max(id) from dbo.m if @max is not null begin while(@min<=@max) begin select @sql=script from dbo.m where id=@min exec sp_executesql @sql set @min=@min+1 end end truncate table dbo.m end
everglow 2013-05-22
  • 打赏
  • 举报
回复
我现在的做法是把test库中创建的脚本插入到new库中一张表上,在这个表上加了个Insert触发器,让他自己生成。我只需要插入生成的脚本就好了。 感觉是有点麻烦,所以才请教高手有没有更好的解决方案。
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复
不会哦,等大虾,在研究下
everglow 2013-05-22
  • 打赏
  • 举报
回复
就是:存储过程的脚本组合在test库中,但是生成要在new中
everglow 2013-05-22
  • 打赏
  • 举报
回复
恩,是的! 但是存储过程的脚本是根据当前数据库的数据组合而成
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复
引用 3 楼 everglow 的回复:
2楼你说的只是找数据(这个是可以的没有问题) 如果我在new中的操作是create proce呢?
你说的是存储过程也要在另一个数据库(而不是当前)
everglow 2013-05-22
  • 打赏
  • 举报
回复
use test go create procedure dbo.m as begin use test select 1 use new exec ('create procedure t as begin select 2 end') end 上面的是错的生成不了 想问下这个怎么才能在new中生成?
everglow 2013-05-22
  • 打赏
  • 举报
回复
2楼你说的只是找数据(这个是可以的没有问题) 如果我在new中的操作是create proce呢?
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复

use test
create procedure dbo.cssd
as
begin
select 1 from test.dbo.sysobjects
select 2 from WMS.dbo.sysobjects
end
KevinLiu 2013-05-22
  • 打赏
  • 举报
回复
use test go create procedure dbo.m as begin use test select 1 use new select * from new.dbo.2 end 如果在不同的数据库可以使用数据库名称。架构名称。表名实现

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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