日期:2014-05-17  浏览次数:20419 次

这个存储过程有个问题,谁能告诉我为什么
if exists(select * from sys.procedures where name='c')
drop proc c
go
create proc c
as
if db_id(N'a')is not null
drop database a
go
create database a
on
(name='a',
filename='d:\a.mdf',size=8,maxsize=9,filegrowth=5)
log on
(name='aa',
filename='d:\aa.ldf',size=7,maxsize=8,filegrowth=5)
go
use a
go
if exists(select * from sys.tables where name='w')
drop table w
go
select * into w from test.dbo.stu where 1=2     --test数据库里有表stu
go
insert into w(name,age,sex,address)
select name,age,sex,address from test.dbo.stu
except
select name,age,sex,address from w
go



这个存储过程有个问题,复制上粘贴可以执行成功
继而可以看到表w里的数据

但是调用存储过程显示成功,但是执行完都没有a这个数据库
这是为什么呢? 
------最佳解决方案--------------------
在 过程、函数或触发器 中不允许使用 USE database 语句。