干嘛要这么做,循环的条件应当为while(@@FETCH_STATUS = 0)declare @companyid int
declare @class varchar(40) 
declare @i int
declare @count int
declare @classid int
select @@cursor_rowsDECLARE company_Cursor CURSOR FOR
SELECT id,class
FROM foods.dbo.company
OPEN company_Cursorfetch next from company_Cursor into @companyid,@classid
while(@@FETCH_STATUS = 0)
begin
select substring(@companyid,1,3),class
INTO foods001db.dbo.companyofclass(companyid,classid)         FETCH NEXT FROM company_Cursor
into @companyid,@classidend
CLOSE company_Cursor
DEALLOCATE company_Cursor

解决方案 »

  1.   

    不支持FOR语句:
    set @i = 0
    while @i < @count
    begin

            FETCH NEXT FROM company_Cursor
    into @companyid,@classid

    insert INTO foods001db.dbo.companyofclass (companyid,classid)
    select substring(@companyid,1,3),@classid
            set @i = @i + 1
    end
      

  2.   

    简单的处理,不用游标:
    insert INTO foods001db.dbo.companyofclass (companyid,classid)
    select substring(id,1,3), class
    FROM foods.dbo.company
      

  3.   

    insert foods001db.dbo.companyofclass(companyid,classid) select left(id,3),class from foods.dbo.company
      

  4.   

    我要给你分,不知道怎么给,而且,还有个问题就是只添进了一条记录
    服务器: 消息 2627,级别 14,状态 1,行 23
    违反了 PRIMARY KEY 约束 'PK_companyofclass'。不能在对象 'companyofclass' 中插入重复键。
    语句已终止。
    服务器: 消息 245,级别 16,状态 1,行 20
    将 varchar 值 '03, 14, 18, 19, 22, 26' 转换为数据类型为 int 的列时发生语法错误。