存储过程中是否可以切换到另外一个数据库?例如:
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.要怎么实现?还请贴出代码来给个例子(如果不支持那就算了)不好意思,没多少分了,给的少还请多谅解
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.要怎么实现?还请贴出代码来给个例子(如果不支持那就算了)不好意思,没多少分了,给的少还请多谅解
go
create procedure dbo.m
as
begin
use test
select 1
use new
select * from new.dbo.2
end如果在不同的数据库可以使用数据库名称。架构名称。表名实现
use test
create procedure dbo.cssd
as
begin
select 1 from test.dbo.sysobjects
select 2 from WMS.dbo.sysobjects
end
如果我在new中的操作是create proce呢?
go
create procedure dbo.m
as
begin
use test
select 1
use new
exec ('create procedure t as begin select 2 end')
end上面的是错的生成不了
想问下这个怎么才能在new中生成?
感觉是有点麻烦,所以才请教高手有没有更好的解决方案。
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
--这样好像可以
create procedure cssd
as
begin
exec (' USE WMS create procedure E1 as begin select 2 end')
end
这个是可以 但是exec (' USE WMS create trigger E1 on dbo.m after insert as begin select 2 end')这个是不可以的