执行游标查询时的内存异常

时间:2016-10-19 13:11:14

标签: sql sql-server-2012 cursor

在以下查询游标中,异常(执行批处理时发生错误。错误消息为:抛出类型'System.OutOfMemoryException'的异常。)。我不知道为什么?记录数量为:3822

declare @ID int,
        @AccNo nvarchar(255),
        @Name nvarchar(255),
        @Type int, 
        @SubAcc bit,
        @Curr int,
        @dept nvarchar(255)
DECLARE cus CURSOR LOCAL FOR    
SELECT ID,
       AccNo,
       Name,
       Type,
       SubAcc,
       Curr,
       Department  
FROM chart_new   
order by ID

OPEN cus;
FETCH NEXT FROM cus INTO @ID,
                         @AccNo,
                         @Name,
                         @Type,
                         @SubAcc,
                         @Curr,
                         @dept
WHILE @@FETCH_STATUS = 0            
BEGIN               
   select @ID -- @ID--, COUNT (*) from FN_SPLIT_INT(@AccNo);
   FETCH NEXT FROM cus INTO @ID,
                            @AccNo,
                            @Name,
                            @Type,
                            @SubAcc,
                            @Curr,
                            @dept
END
CLOSE cus;  
DEALLOCATE cus;

表差异:

CREATE TABLE [dbo].[chart_new](
    [ID] [float] NOT NULL,
    [AccNo] [nvarchar](255) NULL,
    [Name] [nvarchar](255) NULL,
    [Type] [int] NULL,
    [SubAcc] [bit] NULL,
    [Curr] [int] NULL,
    [Department] [nvarchar](255) NULL,
    [acclevel] [int] NULL,
    [haschild] [bit] NULL,
    [ParentID] [int] NULL,
    [ClassID] [int] NULL,
 CONSTRAINT [PK_chart_new] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

0 个答案:

没有答案