select a.*, b.ClassId as 级别 into #a from v_custmerManagerSumAsset a, run..CustmerManagerClass b where 1 <> 1  declare @i int 
          @sSqlString varchar(100)    set @i = select max(ClassId) from run..CustmerManagerClass  while @i > 0   
  begin   
     @sSqlString = select ClassPrescribe from run..CustmerManagerClass where ClassId = @i
     insert into #a select *, ClassId = @i from v_custmerManagerSumAsset where @sSqlString
     set @i = @i - 1   
  end

解决方案 »

  1.   


    create proc sp_mysp
    as
      select a.*, b.ClassId as 级别 into #a from v_custmerManagerSumAsset a, run..CustmerManagerClass b where 1 <> 1  declare @i int 
              @sSqlString varchar(100)    set @i = select max(ClassId) from run..CustmerManagerClass  while @i > 0   
      begin   
         @sSqlString = select ClassPrescribe from run..CustmerManagerClass where ClassId = @i
         insert into #a select *, ClassId = @i from v_custmerManagerSumAsset where @sSqlString
         set @i = @i - 1   
      end
      select * from #a
      

  2.   

    语法错误一大堆!
     select a.*, b.ClassId as 级别 into #a from v_custmerManagerSumAsset a, run..CustmerManagerClass b where 1 <> 1  declare @i int, 
              @sSqlString varchar(100)    set @i = (select max(ClassId) from run..CustmerManagerClass)  while @i > 0   
      begin   
         set @sSqlString = (select ClassPrescribe from run..CustmerManagerClass where ClassId = @i)
         insert into #a select *, ClassId = @i from v_custmerManagerSumAsset where @sSqlString --此为字串,不能直接作为条件,必须改成一个逻辑值!
         set @i = @i - 1   
      end
      

  3.   


    create proc sp_mysp
    as
     select a.*, b.ClassId as 级别 into #a from v_custmerManagerSumAsset a, run..CustmerManagerClass b where 1 <> 1  declare @i int, 
              @sSqlString varchar(100)    set @i = (select max(ClassId) from run..CustmerManagerClass)  while @i > 0   
      begin   
         set @sSqlString = (select ClassPrescribe from run..CustmerManagerClass where ClassId = @i)
         insert into #a select *, ClassId = @i from v_custmerManagerSumAsset where @sSqlString
         set @i = @i - 1   
      end  select * from #ago为何报错Incorrect syntax near the keyword 'set'. 
      

  4.   

    select @i = max(ClassId) from run..CustmerManagerClass
      

  5.   

    select @i = max(ClassId) from run..CustmerManagerClassselect @sSqlString = ClassPrescribe from run..CustmerManagerClass where ClassId = @i
      

  6.   

    declare @i int 
              @sSqlString varchar(100)  改为declare @i int , @sSqlString varchar(100)  或declare @i int 
    declare @sSqlString varchar(100)  
      

  7.   

    declare @i int 
              @sSqlString varchar(100)  改为declare @i as int , @sSqlString as varchar(100)  或declare @i as int 
    declare @sSqlString as varchar(100)  
      

  8.   

    dawugui 兄,你在你本地运行可以通过吗?
      

  9.   

    另外这句也不对.insert into #a select *, ClassId = @i from v_custmerManagerSumAsset where @sSqlString
      

  10.   

    这句要用动态SQL了.#a改为a,在存储过程尽量不要使用临时表,而是使用临时使用的表,用完后删除exec('insert into #a select *, ClassId = @i from v_custmerManagerSumAsset where ' + @sSqlString )
      

  11.   


    create proc sp_mysp
    as
      select a.*, b.ClassId as 级别 into a from v_custmerManagerSumAsset a, run..CustmerManagerClass b where 1 <> 1  declare @i int, @sSqlString varchar(100)    select @i = max(ClassId) from run..CustmerManagerClass
      while @i > 0   
      begin 
         select @sSqlString = ClassPrescribe from run..CustmerManagerClass where ClassId = @i 
         exec('insert into a select *, ClassId = @i from v_custmerManagerSumAsset where ' + @sSqlString )
         set @i = @i - 1   
      end  select * from ago
    按dawugui 老兄的方法可以创建该存储过程,但在执行的时候又出问题了,
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
    服务器: 消息 137,级别 15,状态 2,行 1
    Must declare the variable '@i'.
      

  12.   

    create proc sp_mysp
    as
    Declare @i Var
      select a.*, b.ClassId as 级别 into a from v_custmerManagerSumAsset a, run..CustmerManagerClass b where 1 <> 1  declare @i int, @sSqlString varchar(100)    select @i = max(ClassId) from run..CustmerManagerClass
      while @i > 0   
      begin 
         select @sSqlString = ClassPrescribe from run..CustmerManagerClass where ClassId = @i 
         exec('insert into a select *, ClassId = '+ @i +' from v_custmerManagerSumAsset where ' + @sSqlString )
         set @i = @i - 1   
      end  select * from ago