如何在SQL Server中使用存储过程创建一个新表
这是我建立的存储过程
use test
go
create procedure createtable01
@name varchar(10)
as 
create table  @name
(date real not null)
go
但总是出错
消息 102,级别 15,状态 1,过程 createtable01,第 5 行
'@s' 附近有语法错误。
不知道是为了什么

解决方案 »

  1.   

    错误提示
    消息 102,级别 15,状态 1,过程 createtable01,第 4 行
    '@name' 附近有语法错误。
      

  2.   

    use test
     go
     create procedure createtable01
     @name varchar(10)
     as 
     declare @name table  
     (date int not null)
     go
      

  3.   

    还是不行
    消息 134,级别 15,状态 1,过程 createtable01,第 4 行
    变量名 '@name' 已声明。变量名在查询批次或存储过程内部必须唯一。
      

  4.   

    这样不行的,你@name在存储过程作为变量,在创建表的时候又作为临时表变量,肯定不行的。
      

  5.   

    楼主这个,create table  @name
    (date real not null)这种写法,数据库肯定报错,使用变量@name作为表名,只能申明。但是你这个问题,在存储过程中实现,那表名作为变量要拼接
      

  6.   

    用拼接sql吧。你参数已经声明过@name,后面又declare @name,肯定报错拉
      

  7.   

    我只是想用存储过程建一个新的表,而表的名称我可以自己设置
    楼上说用拼接sql,能否详细说一下,不胜感激
      

  8.   

    简单的例子,但是的确没啥必要这样做。CREATE PROC CreateTable
    (
    @name NVARCHAR(64)
    )
    AS 
    DECLARE @a NVARCHAR(max)
    SET @a='create table '+@name +' (a int ,b int ) '
    EXEC (@a)--然后执行:
    EXEC createtable @name='test'
      

  9.   

    不胜感激!!!!!!
    这个方法可以
    我的想法是在vb中调用一个存储过程,使用传递参数在sql server建立一个自己命名的表。
    如果各位有更好的方法,不胜感激!
      

  10.   


    use test
    go
    create procedure createtable01
    @name varchar(10)
    as
    exec(' 
    create table '+ @name+'
    (date real not null)')
    --go
    go