存储过程的问题

ogiso_pest 2011-04-24 04:08:24
我想写一个存储过程,功能:创建一个数据库 输入参数:数据库名

以下是代码:
运行后提示
消息 102,级别 15,状态 1,过程 createDB,第 24 行
'\' 附近有语法错误。
请问该怎么解决,谢谢了啊


CREATE PROCEDURE createDB
-- Add the parameters for the stored procedure here
@name varchar(20) = 'test'
--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
--<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF @name IS NULL
RETURN 1
ELSE
IF exists (SELECT * FROM sys.databases WHERE name = @name)
Exec ( 'drop database' + @name )
DECLARE @s varchar(1000)
set @s = '
CREATE DATABASE School
ON
(
NAME = @DBname,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\' + @DBname + '.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON
(
NAME = @DBname + 'Log',
FILENAME = "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'+@DBname+'Log.ldf",
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
'
EXEC @s
END
GO
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ogiso_pest 2011-04-24
  • 打赏
  • 举报
回复
运行 后没有创建数据库啊
--小F-- 2011-04-24
  • 打赏
  • 举报
回复

CREATE PROCEDURE createDB
-- Add the parameters for the stored procedure here
@DBname varchar(20) = 'test'
--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here

IF exists (SELECT * FROM sys.databases WHERE name = @DBname)
Exec ( 'drop database' + @DBname )
DECLARE @s varchar(1000)
set @s = '
CREATE DATABASE School
ON
(
NAME = @DBname,
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON
(
NAME = @DBname + ''Log'',
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''Log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
'
EXEC @s
END
GO


DROP PROCEDURE createDB
go
ogiso_pest 2011-04-24
  • 打赏
  • 举报
回复

DROP PROCEDURE createDB

CREATE PROCEDURE createDB
-- Add the parameters for the stored procedure here
@DBname varchar(20) = 'test'
--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here

IF exists (SELECT * FROM sys.databases WHERE name = @DBname)
Exec ( 'drop database' + @DBname )
DECLARE @s varchar(1000)
set @s = '
CREATE DATABASE School
ON
(
NAME = @DBname,
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON
(
NAME = @DBname + ''Log'',
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''Log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
'
EXEC @s
END
GO


出现了消息 111,级别 15,状态 1,过程 createDB,第 15 行
'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。
ogiso_pest 2011-04-24
  • 打赏
  • 举报
回复
经典了下


DROP PROCEDURE createDB

CREATE PROCEDURE createDB
-- Add the parameters for the stored procedure here
@DBname varchar(20) = 'test'
--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here

IF exists (SELECT * FROM sys.databases WHERE name = @DBname)
Exec ( 'drop database' + @DBname )
DECLARE @s varchar(1000)
set @s = '
CREATE DATABASE School
ON
(
NAME = @DBname,
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON
(
NAME = @DBname + ''Log'',
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''Log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
'
EXEC @s
END
GO
ogiso_pest 2011-04-24
  • 打赏
  • 举报
回复
这个问题
消息 2714,级别 16,状态 3,过程 createDB,第 38 行
数据库中已存在名为 'createDB' 的对象。



CREATE PROCEDURE createDB
-- Add the parameters for the stored procedure here
@DBname varchar(20) = 'test'
--<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
--<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF @DBname IS NULL
RETURN 1
ELSE
IF exists (SELECT * FROM sys.databases WHERE name = @DBname)
Exec ( 'drop database' + @DBname )
DECLARE @s varchar(1000)
set @s = '
CREATE DATABASE School
ON
(
NAME = @DBname,
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON
(
NAME = @DBname + ''Log'',
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'' + @DBname + ''Log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
'
EXEC @s
END
GO
rucypli 2011-04-24
  • 打赏
  • 举报
回复
FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\'''

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧