alter proc Mgcreatdb
@db_name varchar(10),
@db_name1 varchar(10),
@db_path varchar(40)
as 
print ('create database '+@db_name+'on'+
'('+'name'+'='+@db_name1+','+
'filename=char(39)+@db_path+char(39)+'+','+
'size=1mb'+','+
'maxsize=2mb'+','+
'filegrowth=10%'+')')--看看输出的sql字符串是否有错误,如果没有的话,建议这样:
alter proc Mgcreatdb
@db_name varchar(10),
@db_name1 varchar(10),
@db_path varchar(40)
as 
delcare @sql varchar(500)
set @sql='create database '+@db_name+'on'+
'('+'name'+'='+@db_name1+','+
'filename=char(39)+@db_path+char(39)+'+','+
'size=1mb'+','+
'maxsize=2mb'+','+
'filegrowth=10%'+')'
exec (@sql)

解决方案 »

  1.   

    回复 frankwong(黄梓钿--宝贝女儿会逗人开心了) 
    你的这个想法对我有点启发,但是我运行了还是抱错,而且还是同样的错误,我估计是@sql的语句有错误,可以帮我改下吗?
      

  2.   


    alter proc Mgcreatdb
    @db_name varchar(10),
    @db_name1 varchar(10),
    @db_path varchar(40)
    as 
    exec('create database '+@db_name+' on '+
    '('+'name'+'='+@db_name1+','+
    'filename='''+@db_path+''','+
    'size=1mb'+','+
    'maxsize=2mb'+','+
    'filegrowth=10%'+')')
      

  3.   

    alter proc Mgcreatdb
    @db_name varchar(10),
    @db_name1 varchar(10),
    @db_path varchar(40)
    as 
    exec('create database '+@db_name+' on '+             -----注意这里有空格
    '('+'name'+'='+@db_name1+','+
    'filename='''+@db_path+''','+
    'size=1mb'+','+
    'maxsize=2mb'+','+
    'filegrowth=10%'+')')