Создайте базу данных, используя в качестве имени переменную - PullRequest
2 голосов
/ 03 августа 2010

Я хотел бы создать базу данных, используя значение из переменной.Вот мой скрипт, но он не работает.Есть идеи?

-- Set Data Base name
DECLARE @DataBaseName char(64);
SET @DataBaseName = 'DbCmsWebsiteTest';

-- Create Data Base
CREATE DATABASE @DataBaseName;
GO

Ответы [ 2 ]

10 голосов
/ 03 августа 2010

Мне нужен динамический SQL для этого (с соответствующими мерами предосторожности, если имя указано пользователем)

-- Set Data Base name
DECLARE @DataBaseName sysname;
SET @DataBaseName = 'DbCmsWebsiteTest';

IF (@DataBaseName  LIKE '%[^0-9A-Z]%')
    RAISERROR('Invalid Characters in Name, %s',16,1,@DataBaseName)
ELSE
    BEGIN
    SET @DataBaseName = QUOTENAME(@DataBaseName)
    EXEC('CREATE DATABASE '+ @DataBaseName)
    END
3 голосов
/ 03 августа 2010

На самом деле, рекомендуемый подход - функция sp_executesql .

Вот пример его использования:

DECLARE @SqlCommand NVARCHAR(255), @DatabaseName NVARCHAR(63)
SET @DatabaseName = 'DbName'
SET @SqlCommand = N'CREATE DATABASE ' + @DatabaseName
EXECUTE sp_executesql @SqlCommand
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...