在存储过程中创建数据库,可以用变量做为数据库名吗?
如:
 create procedure createdb (@dbname varchar(30))
 as
 begin
     create database @dbname
 end

解决方案 »

  1.   

    create procedure createdb (@dbname varchar(30))
    as
    begin
    exec sp_executesql N'create database '+@dbname
    end
      

  2.   

    不行啊,报告了以下的错误:
    -------------------------------
    服务器: 消息 170,级别 15,状态 1,过程 createdb,行 4
    第 4 行: '+' 附近有语法错误。
    -------------------------------
      

  3.   

    不行你就换个写法好了create procedure createdb (@dbname varchar(30))
     as
     begin
         exec ('create database '+@dbname)
     end
      

  4.   

    create procedure createdb (@dbname varchar(30))
     as
     begin
         exec('create database '+ @dbname)
     end
      

  5.   

    create procedure createdb (@dbname varchar(30))
     as
     begin
         exec('create database ' +@dbname)
     end
      

  6.   

    create procedure createdb (@dbname nvarchar(30))
    as
    begin
    declare @strSql varchar(1000)
    set @strSql='create database '+@dbnameexec sp_executesql @strSql
    end