CREATE PROCEDURE SP_createXXB
@tableName nvarchar(20)
AS
Declare @S Nvarchar(2000)
Set @S=N'CREATE TABLE '+@tableName+N'(序号 numeric(18, 0) IDENTITY (1, 1) NOT NULL ,
服务类型 nvarchar (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
帐单类型 nvarchar (4) COLLATE Chinese_PRC_CI_AS NOT NULL 
) ON [PRIMARY]'
EXEC(@S)
GO

解决方案 »

  1.   

    CREATE PROCEDURE SP_createXXB
    @tableName nvarchar(20)
    AS
    declare @sql varchar(2000)
    set @sql='CREATE TABLE '+@tableName +'('+
        '序号 numeric(18, 0) IDENTITY (1, 1) NOT NULL ,'+
            '服务类型 nvarchar (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,'+
        '帐单类型 nvarchar (4) COLLATE Chinese_PRC_CI_AS NOT NULL '+
                ') ON [PRIMARY]'
    exec(@sql)
    GO
      

  2.   

    使用动态语句:ALTER PROCEDURE SP_createXXB
    @tableName nvarchar(20)
    AS
    DECLARE @sql VARCHAR(1000)
    SET @sql='CREATE TABLE   ' +@tableName+ ' (
    序号 numeric(18, 0) IDENTITY (1, 1) NOT NULL ,
    服务类型 nvarchar (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    帐单类型 nvarchar (4) COLLATE Chinese_PRC_CI_AS NOT NULL 
    ) ON [PRIMARY] '
    SELECT @sql
    EXECUTE(@sql)
    GOEXECUTE SP_createXXB 'TTA1'
      

  3.   

    表名是变量,使用动态SQL语句。
      

  4.   

    CREATE PROCEDURE SP_createXXB
    @tableName nvarchar(20)
    AS
    declare @esql varchar(500)
    set @esql ='CREATE TABLE '+ @tableName +' (
    序号 numeric(18, 0) IDENTITY (1, 1) NOT NULL ,
    服务类型 nvarchar (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    帐单类型 nvarchar (4) COLLATE Chinese_PRC_CI_AS NOT NULL 
    ) ON [PRIMARY] '
    exec( @esql )
    GO
      

  5.   

    问题解决了,谢谢各位高手!
    还有一个问题,怎么散分呀?第一次上csdn发帖:)