我可以在SQL Server中的schema
中创建Store Procedure
吗?我试过这个
CREATE PROCEDURE makadmin.createCustomerSchema
(@tenant nvarchar(30) ,
@companyId int ,
@saleId bigint )
AS
Begin
create schema @tenant authorization createcustomerschema)
End
是否可能或我朝错误的方向前进?
答案 0 :(得分:3)
要从存储过程中发出CREATE
语句,请使用EXEC sp_executesql
:
CREATE PROCEDURE createCustomerSchema
(@tenant nvarchar(30) ,
@companyId int ,
@saleId bigint )
AS
Begin
declare @sql nvarchar(4000) = 'create schema ' + @tenant + ' authorization createcustomerschema';
EXEC sp_executesql @sql
End
答案 1 :(得分:2)
您不能这样做,因为'CREATE SCHEMA'必须是查询批次中的第一个语句。
您可以使用动态sql创建以下模式,最好检查数据库中是否已存在模式。
DECLARE @cmd varchar(1000)
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = @tenant)
BEGIN
SET @cmd='CREATE SCHEMA '+@tenant + ' authorization createcustomerschema';
EXEC (@cmd);
END;