本帖最后由 chkhappy 于 2012-12-22 15:27:08 编辑

解决方案 »

  1.   


    CREATE PROC CreateNameTable
        @name CLIENT_NAME
        AS
        DECLARE @result tinyint,@tableName NVARCHAR(50)
        SET @tableName=N'[dbo].[' +@name+ N']'
        EXEC @result=CheckForName @name
     
        if(@result = 0)
            RETURN 0
        ELSE
            BEGIN
            IF(exists(SELECT * FROM dbo.sysobjects 
                WHERE id = OBJECT_ID(@tableName) 
                AND OBJECTPROPERTY(id,'IsUserTable')=1)
                )
                BEGIN
                EXEC('TRUNCATE table '+@tableName)
                END
            ELSE
                BEGIN
                EXEC('CREATE TABLE '+@tableName+'
                (
                    发送到 CLIENT_NAME ,
                    内容  NVARCHAR(500) NULL,
                    时间  datetime NOT NULL
                )')
                END
            RETURN 1
            END
      

  2.   

    CREATE PROC CreateNameTable
        @name CLIENT_NAME
        AS
        DECLARE @result tinyint,@tableName NVARCHAR(50)
        SET @tableName=N'[dbo].[' +@name+ N']'
        EXEC @result=CheckForName @name
     
        if(@result = 0)
            RETURN 0
        ELSE
            BEGIN
            IF(exists(SELECT * FROM dbo.sysobjects 
                WHERE id = OBJECT_ID(@tableName) 
                AND OBJECTPROPERTY(id,'IsUserTable')=1)
                )
                BEGIN
    exec ('TRUNCATE TABLE '+@tableName)
                END
            ELSE
                BEGIN
        exec('CREATE TABLE '+@tableName+'
                (
                    发送到 CLIENT_NAME ,
                    内容  NVARCHAR(500) NULL,
                    时间  datetime NOT NULL
                )
    ')
                END
            RETURN 1
            END
      

  3.   

    这个CLIENT_NAME类型是你自己定义的吗?我本地没有这个类型。
      

  4.   

    嗯 CLIENT_NAME是自己定义的 
      

  5.   

    是不是在用 create table 和 truncate table的时候不能用变量的形式?
      

  6.   

    原来 拼接的字符串sql要用exec 这下懂了 ,谢谢 大神
      

  7.   


    当然,因为SQL变量只有简单原子类型,没有引用类型,期待2012之后引入引用类型,让动态EXEC见鬼。