我要在存储过程中循环取sysobjects中的记录该怎么做? 

解决方案 »

  1.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_UpdateECADataBase2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[SP_UpdateECADataBase2]
    GO
    CREATE  PROCEDURE dbo.SP_UpdateECADataBase2
    AS
       BEGIN
    DECLARE @TableName varchar(50) --表名 DECLARE TableName CURSOR FOR
    select name from sysobjects where (name like 'SYS_%' or name like 'TSYS_%')
    OPEN TableName
    Fetch Next from TableName into @TableName 
    WHILE @@FETCH_STATUS=0
    Begin
    -------------------------------------------------------------------------------
        print @TableName
        
        --少了下面一行代码
        Fetch Next from TableName into @TableName 
    END
    close TableName
    DEALLOCATE TableName
    -------------------------------------------------------------------------------
    SET XACT_ABORT off
        ENDGO
      

  2.   

    不执行 Fetch Next 操作,就等同于在游标指向的第一条记录处死循环。