【SQLserver】如何在存储过程中,创建库的同时创建它对应的表

365Marathon 2014-04-03 11:43:35
执行一个存储过程
if exists(select * from master..sysdatabases where name=@dbname)
print 'exists'
else
exec ( 'create database '+@dbname)

他只能创建一个数据库,但是如何创建库的同时,也把表创建好呢?
...全文
199 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2014-04-03
  • 打赏
  • 举报
回复
引用 4 楼 victoryboss 的回复:
[quote=引用 3 楼 victoryboss 的回复:] [quote=引用 2 楼 OrchidCat 的回复:] [quote=引用 楼主 victoryboss 的回复:] 执行一个存储过程 if exists(select * from master..sysdatabases where name=@dbname) print 'exists' else exec ( 'create database '+@dbname) 他只能创建一个数据库,但是如何创建库的同时,也把表创建好呢?
如果是固定的表,lz可以放到model库中,新生成的DB都是按照这个来的。 如果是非固定的表,比如根据某个脚本生成的, lz就把脚本结合小F 姐的写法,执行即可。 [/quote] 库是新建,但是库里的表都是一样的[/quote] 请问如何复制这个modle库,同时更改他的库名呢[/quote] 无需复制,sql 会自动按照model库来创建你的命名数据库样本。
guguda2008 2014-04-03
  • 打赏
  • 举报
回复
终结此贴
declare @dbname varchar(100)
select @dbname='test'
if exists(select 1 from sys.databases where name=@dbname)
print 'exists'
else
begin
	declare @sql varchar(max)
	select @sql='create database '+@dbname+';'
	
	exec (@sql)
	select @sql='use '+@dbname+';
	create table tb_test(col1 int);'
	exec (@sql)
end
365Marathon 2014-04-03
  • 打赏
  • 举报
回复
引用 3 楼 victoryboss 的回复:
[quote=引用 2 楼 OrchidCat 的回复:] [quote=引用 楼主 victoryboss 的回复:] 执行一个存储过程 if exists(select * from master..sysdatabases where name=@dbname) print 'exists' else exec ( 'create database '+@dbname) 他只能创建一个数据库,但是如何创建库的同时,也把表创建好呢?
如果是固定的表,lz可以放到model库中,新生成的DB都是按照这个来的。 如果是非固定的表,比如根据某个脚本生成的, lz就把脚本结合小F 姐的写法,执行即可。 [/quote] 库是新建,但是库里的表都是一样的[/quote] 请问如何复制这个modle库,同时更改他的库名呢
365Marathon 2014-04-03
  • 打赏
  • 举报
回复
引用 2 楼 OrchidCat 的回复:
[quote=引用 楼主 victoryboss 的回复:] 执行一个存储过程 if exists(select * from master..sysdatabases where name=@dbname) print 'exists' else exec ( 'create database '+@dbname) 他只能创建一个数据库,但是如何创建库的同时,也把表创建好呢?
如果是固定的表,lz可以放到model库中,新生成的DB都是按照这个来的。 如果是非固定的表,比如根据某个脚本生成的, lz就把脚本结合小F 姐的写法,执行即可。 [/quote] 库是新建,但是库里的表都是一样的
Mr_Nice 2014-04-03
  • 打赏
  • 举报
回复
引用 楼主 victoryboss 的回复:
执行一个存储过程 if exists(select * from master..sysdatabases where name=@dbname) print 'exists' else exec ( 'create database '+@dbname) 他只能创建一个数据库,但是如何创建库的同时,也把表创建好呢?
如果是固定的表,lz可以放到model库中,新生成的DB都是按照这个来的。 如果是非固定的表,比如根据某个脚本生成的, lz就把脚本结合小F 姐的写法,执行即可。
--小F-- 2014-04-03
  • 打赏
  • 举报
回复
--TRY
DECLARE @sql VARCHAR(max),@dbname VARCHAR(max)
if exists(select * from master..sysdatabases where name=@dbname) 
print 'exists' 
else 
SET @sql=ISNULL(@sql,'')+'create database'+@dbname+' create table tb (....)'
print(@sql)
發糞塗牆 2014-04-03
  • 打赏
  • 举报
回复
我文章是说“如何调用”,不过的确没有直接解决你的问题
365Marathon 2014-04-03
  • 打赏
  • 举报
回复
引用 5 楼 guguda2008 的回复:
终结此贴
declare @dbname varchar(100)
select @dbname='test'
if exists(select 1 from sys.databases where name=@dbname)
print 'exists'
else
begin
	declare @sql varchar(max)
	select @sql='create database '+@dbname+';'
	
	exec (@sql)
	select @sql='use '+@dbname+';
	create table tb_test(col1 int);'
	exec (@sql)
end
恭喜,您终结了此贴!哈哈!试了下,可以实现!
365Marathon 2014-04-03
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
不妨考虑我的文章:http://blog.csdn.net/dba_huangzj/article/details/8350829
谢谢您的解答!您博客上写的很清楚,但是灵活性不够,比如库的名字还有位置不能选择。
365Marathon 2014-04-03
  • 打赏
  • 举报
回复
引用 1 楼 fredrickhu 的回复:
--TRY
DECLARE @sql VARCHAR(max),@dbname VARCHAR(max)
if exists(select * from master..sysdatabases where name=@dbname) 
print 'exists' 
else 
SET @sql=ISNULL(@sql,'')+'create database'+@dbname+' create table tb (....)'
print(@sql)
引用 6 楼 OrchidCat 的回复:
[quote=引用 4 楼 victoryboss 的回复:] [quote=引用 3 楼 victoryboss 的回复:] [quote=引用 2 楼 OrchidCat 的回复:] [quote=引用 楼主 victoryboss 的回复:] 执行一个存储过程 if exists(select * from master..sysdatabases where name=@dbname) print 'exists' else exec ( 'create database '+@dbname) 他只能创建一个数据库,但是如何创建库的同时,也把表创建好呢?
如果是固定的表,lz可以放到model库中,新生成的DB都是按照这个来的。 如果是非固定的表,比如根据某个脚本生成的, lz就把脚本结合小F 姐的写法,执行即可。 [/quote] 库是新建,但是库里的表都是一样的[/quote] 请问如何复制这个modle库,同时更改他的库名呢[/quote] 无需复制,sql 会自动按照model库来创建你的命名数据库样本。 [/quote] 谢谢您的解答!请问可以说下具体如何操作吗?
發糞塗牆 2014-04-03
  • 打赏
  • 举报
回复

34,590

社区成员

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

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