CREATE PROCEDURE sp_createcard
@tablename Varchar(30)
AS
BEGIN
  exec( 'create table ' + @tablename + '(
   cId            bigint        identity(1,1)  primary key,  --id
   cGoTopTag      bigInt        default 0,                   --提前标记
   cGoTopTimes    int           default -1,                  --提前次数
   cUserName      varchar(20)   default('' ''),              --用户名
   cCardState     int           default 1,                   --帖子状态 ( 0 ->系统帖, 1 ->未结帖, 2 ->已结帖 )
   
   
   )'
      )
END

解决方案 »

  1.   

    现在修改如下:
    CREATE PROCEDURE sp_createcard
    @tablename Varchar(30)
    AS
    BEGIN
      exec( 'create table ' + @tablename + '(
       cId            bigint        identity(1,1)  primary key,  --id
       cGoTopTag      bigInt        default 0,                   --提前标记
       cGoTopTimes    int           default -1,                  --提前次数
       cUserName      varchar(20)   default('' ''),              --用户名
       cCardState     int           default 1,                   --帖子状态 ( 0 ->系统帖, 1 ->未结帖, 2 ->已结帖 )
       
      cTableName   Varchar(30)     default(@tablename) ,   ---表的名称,出问题了???
      
       )'
          )
    END是不是在存储过程里建立表的时候不能够引用和表结构本身有关的信息,如:表名,字段名
    ??
    或则是里面的局部变量不能是存储过程的参数名??
    还是其他什么原因呢??
    3QQQQQQQQQQQQQQQQQQQQQQQQQ
      

  2.   

    CREATE PROCEDURE sp_createcard
    @tablename Varchar(30)
    AS
    BEGIN
      exec( 'create table ' + @tablename + '(
       cId            bigint        identity(1,1)  primary key,  --id
       cGoTopTag      bigInt        default 0,                   --提前标记
       cGoTopTimes    int           default -1,                  --提前次数
       cUserName      varchar(20)   default('' ''),              --用户名
       cCardState     int           default 1,                   --帖子状态 ( 0 ->系统帖, 1 ->未结帖, 2 ->已结帖 )
       
      cTableName   Varchar(30)     default ('''+@tablename+''') ,   ---表的名称,出问题了???
      
       )'
          )
    END