----------set @sql = @sql + @sql1 +') select '+ @sql2 ------------
         -set @sql = @sql + @sql1 +') values '+ @sql2 

解决方案 »

  1.   

    ---set @sql1 = substring(@sql1,1,charindex(',',@sql1) - 1)  ?
    ---Set @sql2 = substring(@sql2,1,charindex(',',@sql2) - 1)  ?   set @sql1 = substring(@sql1,1,Len(@sql1)-1)
       Set @sql2 = substring(@sql2,1,Len(@sql2)-1)
      

  2.   

    改了。
    exec inserttable 'users','name,password,status','11,111,22'
    用上面的语句执行,速度奇慢!
    死了!强行结束,郁闷!!!
      

  3.   

    set @sql = @sql + @sql1 +') select '+ @sql2 
            print @sql   --看看打出来的语句的语法是不是有问题.
    exec(@sql)
    GO
      

  4.   

    不要在存储过程中执行,先打印出来看看:
    exec(@sql)
    改为:
    print @sql检查将打印出来的语句有没有错误,并放在查询分析器中执行看看
      

  5.   

    服务器: 消息 536,级别 16,状态 3,过程 InsertTable,行 17
    向 substring 函数传递了无效的 length 参数。
    服务器: 消息 536,级别 16,状态 1,过程 InsertTable,行 18
    向 substring 函数传递了无效的 length 参数。
    是下面两句的问题:
    set @sql1 =  @sql1 + substring(@strNames,1,charindex(',',@strNames) - 1) + ','
    set @sql2 =  @sql2 + ''''+substring(@strValues,1,charindex(',',@strValues) - 1) + ''','
    charindex(',',@strNames) - 1)的问题?
      

  6.   

    多谢!应该在while前加
    select @strNames = @strNames + ',',@strValues = @strValues + ','