SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE databasemake
-- Add the parameters for the stored procedure here
@dbname varchar(50)
AS
BEGIN
SET NOCOUNT ON;
CREATE DATABASE [@dbname] ON PRIMARY
요 아래 부분 요 아래 부분의 NAME 에서 상단의 입력받은 값으로 하고 싶습니다.
어떻게 해야 하는지 조언 부탁 드립니다.
( NAME = N'' + [@dbname] + '', FILENAME = N'C:\DATABASE\' + @dbname +'.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'' + @dbname + '_log', FILENAME = N'C:\DATABASE\' @dbname +'_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
END
GO
위와 같은 방법으로 해서 구문 체크를 하면.
메시지 1038, 수준 15, 상태 1, 프로시저 databasemake, 줄 17
개체 또는 열 이름이 없거나 비어 있습니다. SELECT INTO 문의 각 열에 이름이 있는지 확인하십시오. 다른 문의 경우에는 빈 별칭이 있는지 확인하십시오. 별칭은 "" 또는 []로 정의할 수 없습니다. 별칭을 올바른 이름으로 변경하십시오.
라는 메시지가 나오면서 실행이 되지 않습니다.
Comment 2
-
쓸만한게없네(윤선식)
2013.04.17 14:47
-
catchv
2013.04.17 15:09
SET ANSI_NULLS ON
GOSET QUOTED_IDENTIFIER ON
GOALTER PROCEDURE databasemake
-- Add the parameters for the stored procedure here
@dbname varchar(50)
AS
BEGIN
SET NOCOUNT ON;EXECUTE (' CREATE DATABASE ' + @dbname + ' ON PRIMARY
( NAME = ' + N'' + @dbname + '' + ', FILENAME = N''C:\DATABASE\' + @dbname +'.mdf''' + ', SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = ' + N'' + @dbname + '_log' + ', FILENAME = N''C:\DATABASE\' + @dbname + '_log.ldf''' + ', SIZE = 1024KB , FILEGROWTH = 10%)'
)
END
GO-- catchv
동적쿼리를 이용해서 명령어를 변수에 담은 후 실행하셔야 할 것으로 보입니다만....
아래 글 참고해 보세요.
http://www.sqler.com/index.php?_filter=search&mid=bSQLQA&search_target=comment&search_keyword=%EB%8F%99%EC%A0%81+%EC%BF%BC%EB%A6%AC&document_srl=482593