SQL 脚本创建数据库时, 能用变量代替数据库名吗?

ltolll 2018-12-28 03:11:22

-- declare database name
DECLARE @dbName varchar(20);
SET @dbName='b2018';

IF EXISTS (select * From master.dbo.sysdatabases WHERE name=@dbName)
PRINT @dbName + ' DATABSE exist';
ELSE
BEGIN
CREATE DATABASE [@dbName] ON PRIMARY
( NAME = @dbName
...
END


写到 NAME = @dbName 这里就报语法错误了.
...全文
227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltolll 2018-12-28
  • 打赏
  • 举报
回复
另一个问题:https://bbs.csdn.net/topics/392501870
二月十六 版主 2018-12-28
  • 打赏
  • 举报
回复
试试这样
-- declare database name
DECLARE @dbName varchar(20);
SET @dbName='b2018';

IF EXISTS (select * From master.dbo.sysdatabases WHERE name=@dbName)
PRINT @dbName + ' DATABSE exist';
ELSE
BEGIN
DECLARE @sql NVARCHAR(max)=' CREATE DATABASE '+@dbName+' ON PRIMARY( NAME = '+@dbName+'...'
EXEC(@sql)
END
吉普赛的歌 版主 2018-12-28
  • 打赏
  • 举报
回复
只能用动态SQL:

-- declare database name
DECLARE @dbName varchar(20),@sql NVARCHAR(MAX)
SET @dbName='b2018';

IF EXISTS (select * From master.dbo.sysdatabases WHERE name=@dbName)
	PRINT @dbName + ' DATABSE exist';
ELSE
BEGIN
	SET @sql='CREATE DATABASE ['+@dbName+'] ON PRIMARY
	( NAME = @dbName
...'
	PRINT @sql
	EXEC(@sql)
END

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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