USE master
GOIF EXISTS(SELECT name FROM sysobjects --判斷過程judge是否存在
WHERE name = 'judge' AND type = 'P')
DROP PROCEDURE judge
GOCreate Proc judge @DatabaseName varchar(20)='%'
AS
if exists (select name from sysdatabases where name = @DatabaseName )
begin
Drop database DBMoney1 <--這里為什麼不能用@DatabaseName代替?
create database DBMoney1
end
else
create database DBMoney1
GOexec judge 'DBMoney1' --執行過程
GO為什麼Drop database DBMoney1<--這里為什麼不能用@DatabaseName代替?
GOIF EXISTS(SELECT name FROM sysobjects --判斷過程judge是否存在
WHERE name = 'judge' AND type = 'P')
DROP PROCEDURE judge
GOCreate Proc judge @DatabaseName varchar(20)='%'
AS
if exists (select name from sysdatabases where name = @DatabaseName )
begin
Drop database DBMoney1 <--這里為什麼不能用@DatabaseName代替?
create database DBMoney1
end
else
create database DBMoney1
GOexec judge 'DBMoney1' --執行過程
GO為什麼Drop database DBMoney1<--這里為什麼不能用@DatabaseName代替?
exec (@sqlstr) set @sqlstr =' create database '+@DatabaseName
exec (@sqlstr)
--------------
说得没错,楼主要的功能必须用动态生成存储过程才行的
AS
if exists (select name from sysdatabases where name = @DatabaseName )
begin
Drop database DBMoney1 <--這里為什麼不能用@DatabaseName代替?
create database DBMoney1
end
else
create database DBMoney1
GO
-----------------------
Create Proc judge @DatabaseName varchar(20)='%'
AS
declare @sqlstr nvarchar(4000)
set @sqlstr='if exists (select name from sysdatabases where name ='''+@DatabaseName+''')'+char(13)
set @sqlstr=@sqlstr+'begin'+char(13)
set @sqlstr=@sqlstr+'Drop database '+@DatabaseName+''+char(13)
set @sqlstr=@sqlstr+'create database '+@DatabaseName+''+char(13)
set @sqlstr=@sqlstr+'end'+char(13)
set @sqlstr=@sqlstr+'else'+char(13)
set @sqlstr=@sqlstr+'create database '+@DatabaseName+''+char(13)
exec (@sqlstr)
GO