DECLARE @SnapshotName VARCHAR(50)
SET @SnapshotName='ABC_'+Convert(char(10),getdate(),112)
USE ABC
--Drop snapshot database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = @SnapshotName
)
BEGIN
DROP DATABASE @SnapshotName
END@SnapshotName为什么不可以做为数据库名称
SET @SnapshotName='ABC_'+Convert(char(10),getdate(),112)
USE master
--Drop snapshot database if it already exists
set @sql='IF EXISTS (SELECT name FROM sys.databases WHERE name = '''+@SnapshotName+''')'
+'BEGIN DROP DATABASE '''+@SnapshotName+''' END'
exec(@sql)
--改了一下
DECLARE @SnapshotName VARCHAR(50),@sql varchar(8000)
SET @SnapshotName='ABC_'+Convert(char(10),getdate(),112)
USE master
--Drop snapshot database if it already exists
set @sql='IF EXISTS (SELECT name FROM sys.databases WHERE name = '+@SnapshotName+')'
+' BEGIN DROP DATABASE '+@SnapshotName+' END'
exec(@sql)--或者DECLARE @SnapshotName VARCHAR(50),@sql varchar(8000)
SET @SnapshotName='ABC_'+Convert(char(10),getdate(),112)
USE master
--Drop snapshot database if it already exists
set @sql='IF EXISTS (SELECT name FROM sys.databases WHERE name = '+@SnapshotName+')'
+' DROP DATABASE '+@SnapshotName
exec(@sql)
declare @tname varchar(20)
set @tname='TestScore'
select * from sysobjects where name=@tname
SET @SnapshotName='ABC_'+Convert(char(10),getdate(),112)
USE ABC
--Drop snapshot database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = @SnapshotName
)
BEGIN
exec 'DROP DATABASE ' +@SnapshotName
END
DECLARE @SnapshotName VARCHAR(50)
SET @SnapshotName='ABC_'+Convert(char(10),getdate(),112)
USE ABC
--Drop snapshot database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = @SnapshotName
)
BEGIN
exec ('DROP DATABASE ' +@SnapshotName)
END
END
@SnapshotName为什么不可以做为数据库名称
因为红色部分,所以会报错! 用3楼或者5楼的语句去删除,要用动态,exec()