use equipment_manage_db
go
if exists(select name from sysobjects
          where name = 'createdatabase' and type ='p')
drop procedure createdatabase
go
create procedure createdatabase(@databasefilename varchar(50))
as
declare @sql varchar(200)
set @sql='create database '+@databasefilename--+'on
(
name = apple_equipment_service_db_dat,--提示这里有问题,为什么
filename = "g:\创建数据库\apple_equipment_service_dbdat.mdf",
size = 5,
maxsize = 20,
filegrowth = 1)
log on
(
name = apple_equipment_service_db_log,
filename = "g:\创建数据库\apple_equipment_service_dbdat.ldf",
size = 5,
maxsize = 20,
filegrowth = 1)'exec(@sql)
go谢谢

解决方案 »

  1.   

    SQL SERVER下的存储过程,输入参数不用加括号
      

  2.   

    if exists(select name from sysobjects
              where name = 'sp_create_database' and type ='p')
    drop procedure sp_create_database
    gocreate procedure sp_create_database@dbname sysname = null /* name of db */asdeclare @retcode int,
    @exec_str nvarchar (460)if (not (is_srvrolemember('sysadmin') = 1)) -- Make sure that it's the SA executing this.
    begin
    raiserror(15247,-1,-1)
    return(1)
    endif @dbname is null
    begin
    raiserror (15261,-1,-1)
    return (1)
    endif exists (select * from master.dbo.sysdatabases where name = @dbname)
    begin
    raiserror(15032,-1,-1,@dbname)
    return(1)
    end/* Check to see if a valid database name was supplied. */
    exec @retcode = sp_validname @dbname
    if @retcode <> 0
    return(1)/* Create the database's system device segment. */
    select @exec_str = 'CREATE DATABASE '
    + quotename( @dbname , '[')
    + ' ON (NAME ='
    +'apple_equipment_service_db_dat'
    + ',FILENAME ='
    +''''
    + 'c:\apple_equipment_service_dbdat.mdf'
    +''''
    + ',SIZE ='
    + convert(varchar(28),5)
    +',MAXSIZE ='
    +convert(varchar(28),20)
    +',FILEGROWTH ='
    +convert(varchar(28),1)
    + ') LOG ON (NAME='
    + 'apple_equipment_service_db_log'
    + ',FILENAME ='
    +''''
    + 'c:\apple_equipment_service_dbdat.ldf'
    +''''
    + ',SIZE ='
    + convert(varchar(28),5)
    +',MAXSIZE ='
    +convert(varchar(28),20)
    +',FILEGROWTH ='
    +convert(varchar(28),1)
    + ')'
    exec(@exec_str)if @@error <> 0
    begin
    raiserror(15264,-1,-1,'system or log')
    return(1)
    endreturn(0)