--改为:
DECLARE @CRE_STRING                            NVARCHAR(4000) SET @CRE_STRING = '' 
SET @CRE_STRING = @CRE_STRING + 'CREATE TABLE [##class_name] (' 
SET @CRE_STRING = @CRE_STRING + ' [class_code] NVARCHAR(7)' 
SET @CRE_STRING = @CRE_STRING + ',[class_name] NVARCHAR(20))' EXECUTE (@CRE_STRING) SELECT * FROM [##class_name] 

解决方案 »

  1.   


    --或者:DECLARE @CRE_STRING    NVARCHAR(4000) SET @CRE_STRING = '' 
    SET @CRE_STRING = @CRE_STRING + 'CREATE TABLE [#class_name] (' 
    SET @CRE_STRING = @CRE_STRING + ' [class_code] NVARCHAR(7)' 
    SET @CRE_STRING = @CRE_STRING + ',[class_name] NVARCHAR(20)) select * from [#class_name]' EXECUTE (@CRE_STRING) 
      

  2.   

    DECLARE @CRE_STRING                            NVARCHAR(4000) SET @CRE_STRING = '' 
    SET @CRE_STRING = @CRE_STRING + 'CREATE TABLE [##class_name] (' 
    SET @CRE_STRING = @CRE_STRING + ' [class_code] NVARCHAR(7)' 
    SET @CRE_STRING = @CRE_STRING + ',[class_name] NVARCHAR(20))' EXECUTE (@CRE_STRING) SELECT * FROM [##class_name] 
      

  3.   

    恩,的确是作用域的问题,改为##就可以了.但是如果我直接用CREATE TABLE [#class_name] ([class_code] NVARCHAR(7),[class_name] NVARCHAR(20)) 创建临时表,select的时候就可以直接使用[#class_name],为什么用EXECUTE 执行以后就不行了呢?希望高手能解答下,谢谢.