Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создание новой БД  [new]
kir_2004
Member

Откуда: Санкт-Петербург
Сообщений: 2
Не подскажите почему процедура не работает?

CREATE PROCEDURE [dbo].[BU_Enterprise]

AS

declare @DBName sysname
declare @Postfix int

SELECT @DBName='E_Copy_1'
SELECT @Postfix=2

WHILE EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = @DBName)
begin
SELECT @DBName='E_Copy_'+str(@Postfix)
SELECT @Postfix=@Postfix+1
end

CREATE DATABASE @DBName

GO
10 май 04, 17:18    [670074]     Ответить | Цитировать Сообщить модератору
 Re: Создание новой БД  [new]
a1ex
Member

Откуда: .ua
Сообщений: 369
использовать напрямую @DBName не получится, разве что так
declare @DBNAME sysname, @str varchar(100)
set @DBName = 'MyDbName'
set @str = 'create database ' + @DBName
exec(@str)
10 май 04, 17:42    [670092]     Ответить | Цитировать Сообщить модератору
 Re: Создание новой БД  [new]
josia
Member

Откуда: http://exactpro.com
Сообщений: 482
CREATE PROCEDURE [dbo].[BU_Enterprise] 
AS

declare @DBName sysname
declare @Postfix int

SELECT @DBName='E_Copy_1'
SELECT @Postfix=2
WHILE EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = @DBName)
begin
SELECT @DBName='E_Copy_'+CAST(@Postfix AS varchar(30))
SELECT @Postfix=@Postfix+1
end
DECLARE @SQL varchar(300)
SET @SQL = 'CREATE DATABASE ' + @DBName
EXEC (@SQL)
GO
Что то странное Вы задумали...
10 май 04, 17:46    [670097]     Ответить | Цитировать Сообщить модератору
 Re: Создание новой БД  [new]
Alexes
Member

Откуда:
Сообщений: 1100
Создаёте БД с уникальным именем?
Вместо
WHILE EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = @DBName)
можно использовать
WHILE db_id(@DBName) is not NULL
Или чтобы без циклов
CREATE PROCEDURE [dbo].[BU_Enterprise] 
AS

declare @DBName sysname
declare @Postfix int

SELECT @DBName='E_Copy_'

select @Postfix = max(cast(substring(name,len(@DBName)+1,128) as int))
from master.dbo.sysdatabases
where name like replace(@DBName,'_', '\_')+'%' escape '\'

set @PostFix = isnull(@PostFix, 0) + 1

set @DBName = @DBName + cast(@PostFix as varchar(10))
DECLARE @SQL varchar(300)
SET @SQL = 'CREATE DATABASE ' + @DBName

exec (@SQL)

GO
10 май 04, 18:17    [670129]     Ответить | Цитировать Сообщить модератору
 Re: Создание новой БД  [new]
kir_2004
Member

Откуда: Санкт-Петербург
Сообщений: 2
Всем огромное спасибо, промогло.
12 май 04, 01:32    [672655]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить