尝试让这项工作成功:
CREATE PROCEDURE createDbandSchema AS
BEGIN
CREATE DATABASE MYDB
USE MYDB
CREATE SCHEMA MYSCHEMA
END
我遇到错误
a USE database statement is not allowed in a procedure, function or trigger.
最佳答案
create schema
语句必须是批处理中的第一个语句,因此它需要嵌套范围。外部范围更改为新数据库。内部作用域将 create schema
作为批处理的第一个语句运行:
create procedure createDbandSchema(@db sysname, @schema sysname)
as begin
declare @sql nvarchar(max) = N'CREATE DATABASE ' + quotename(@db);
exec (@sql)
set @sql = N'USE ' + quotename(@db) + '; exec (N''CREATE SCHEMA ' +
quotename(@schema) + N''')';
exec (@sql)
end
关于sql-server - 如何在过程中添加 CREATE DATABASE 和 CREATE SCHEMA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31469116/