首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

麻烦帮小弟我看一下什么东东

2012-01-28 
麻烦帮我看一下什么错误?SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO--

麻烦帮我看一下什么错误?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:xujinli
-- Create date: 2011-12-7
-- Description:创建数据库和表
-- =============================================
CREATE PROCEDURE P_Create
--@year nvarchar(100)//这样的写法是传进来的参数
AS
 declare @year nvarchar(100),
  @KuName nvarchar(200)
BEGIN
  select @year=YEAR(getdate()),
  @KuName='XQ_'+Cast(YEAR(getdate()) as nvarchar(50))
   
if exists(select * from sys.databases where [name]=@KuName ) --判断该数据是否存在
  print '该数据库已经存在'
else
begin 
  create database @KuName --创建数据库名为:@KuNameon primary
(name=@KuName,
filename='D:\Project\DataBase\'+@KuName+'.mdf',
size=20,
filegrowth=10%
), --创建日志,只有一个主数据文件@KuName.mdf
log on
(name=@KuName,
filename='D:\Project\DataBase\'+@KuName+'.ldf',
size=20,
filegrowth=10%

end 

END
GO
红色的部分说是有语法错误 why

[解决办法]
create database 后面要加实际的名称,不能用变量.
[解决办法]
用变量创建数据库?
[解决办法]
这个得拼SQL语句吧。
[解决办法]
用要动态SQL,

SQL code
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: xujinli-- Create date: 2011-12-7-- Description: 创建数据库和表-- =============================================create procedure P_Create--@year nvarchar(100)//这样的写法是传进来的参数AS declare @year nvarchar(100),  @KuName nvarchar(200)BEGIN  select @year=cast(YEAR(getdate()) as nvarchar),  @KuName='XQ_'+Cast(YEAR(getdate()) as nvarchar(50))    if exists(select * from sys.databases where [name]=@KuName ) --判断该数据是否存在  print '该数据库已经存在'elsebegin    declare @sql varchar(5000)  select @sql='create database '+@KuName+' ON  PRIMARY '  +'(name='''+@KuName+''',filename=''D:\Project\DataBase\'+@KuName+'.mdf'', '  +'size=20,filegrowth=10%) log on(name='''+@KuName+'_log'','  +'filename=''D:\Project\DataBase\'+@KuName+'.ldf'',size=20,filegrowth=10%)'    exec(@sql)    end  ENDgo
[解决办法]
不行,一定要用动态SQL,举个最简单的例子,
SQL code
-- 建测试库,正常.create database abcd-- 删除测试库,正常.drop database abcd-- 用变量做库名,出错.declare @KuName nvarchar(50)select @KuName='abcd'create database @KuNameMsg 102, Level 15, State 1, Line 4Incorrect syntax near '@KuName'.
[解决办法]
要用动态语句创建库表
[解决办法]
SQL code
-- 在存储过程中,建完数据库后执行.exec('use '+@KuName+' create table [表名]([字段名] [数据类型]...)')
[解决办法]
不需要"go", 删除即可.

请看10楼代码.

热点排行