1

我可以schemaStore ProcedureSQL Server 中创建吗?我试过这个

 CREATE PROCEDURE makadmin.createCustomerSchema 
 (@tenant nvarchar(30) ,
  @companyId int , 
  @saleId bigint  )
  AS
  Begin
  create schema @tenant authorization  createcustomerschema)
  End

有可能还是我走错了方向?

4

2 回答 2

4

要从存储过程内部发出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
于 2013-09-10T07:09:29.807 回答
3

您不能这样做,因为“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;
于 2013-09-10T07:16:49.687 回答