2013-05-15 77 views
1

这可能很简单,但我一直无法解决。 我有一段代码(类似于下面的代码),我通过选择将一堆值分配给一堆变量,它做了这项工作,但是当我运行它时,得到的结果是导致我的SSMS崩溃的原因是有办法避免这种....不想要选择变量显示值

DECLARE @Name VARCHAR(100) 
DECLARE @LastName VARCHAR(100) 
DECLARE @Address VARCHAR(100) 

SELECT TOP 1 
@Name = Name 
@LastName = LastName 
@Address = Address 
From Person.Address 
Where Name = 'Name' 
Order By ID 

我使用在一个循环我在哪里处理周围3-400K行上面的代码,并通过这个变量的存储过程,每个顶部1选择语句抛出一个结果集导致我的SSMS崩溃我真的不需要选择顶部1值显示,任何想法如何摆脱这一点?...

任何帮助将不胜感激。 ---如下所示是代码,我已经散列了很少的东西,但这是它是什么,我从Query Analayzer运行它,因为这只是一次过程,所以我们不需要创建SP。

DECLARE @retstat INT 
    DECLARE @Name VARCHAR(255) 
    DECLARE @Lang TINYINT 
    DECLARE @Address CHAR(10) 
    DECLARE @ID INT 
    DECLARE @BranchSeqNo INT 

    DECLARE @AddressCode VARCHAR(10)  
    DECLARE @Address1 VARCHAR(50) 

    DECLARE @City VARCHAR(30) 
    DECLARE @State VARCHAR(3) 
    DECLARE @PostalCode VARCHAR(15)  
    DECLARE @Country VARCHAR(30)  

    SET @ID = NULL 

    UPDATE RAWClaimTable Set Processed = 0 where Processed is null 

    UPDATE RAWClaimTable SET ErrorCode = NULL ,ErrorMessage = NULL ,Processed = 0 
    WHERE ErrorMessage IS NOT NULL AND CLAIMID is null 

WHILE EXISTS (SELECT * 
      FROM  RAWClaimTable 
      WHERE Processed = 0) 
BEGIN 

-----Initialize Default Variables 
    SET @Lang = 0 
    SET @Address = 'Import' 
    SET @SaveMode = 0 
    SET @ID = Null 


    SELECT TOP 1 
      @LossDate = LossDate , 
      @ClaimDate = ClaimDate , 
      @OpenDate = OpenDate , 
      @Receivedate = ReceiVeDate , 
      @Name = Name , 
      @Address = Address , 
      @Address1 = Address1 , 
      @City = City , 
      @State = State , 
      @PostalCode = PostalCode , 
      @Country = Country 
    FROM RAWClaimTable 
    WHERE Processed = 0 
    ORDER BY ClaimID 

    BEGIN TRY 

     EXEC @RetStat = Usp_ProcessRawData @Lang, @Address, @SaveMode, @ID OUT, 
      @BranchSeqNo, @OriginalBranchSeqNo, @IncidentID, 
      @AssignmentTypeCode, @PartnershipID, @AccountID, 

    END TRY   

    BEGIN CATCH 

     SELECT @RetStat = @@Error 
     if @@Trancount > 0 rollback tran 
     IF @RetStat != 0 
      BEGIN 
       update RAWClaimTable set Errormessage = ERROR_MESSAGE() where ClaiMKey = @Name 
      END 
    END CATCH 

    IF @ID IS NOT NULL 
     BEGIN 
      UPDATE RAWClaimTable 
      SET  ClaimID = @ID , 
        Processed = 1 
      WHERE ClaiMKey = @Name 
     END  
    ELSE 
     BEGIN 
      UPDATE RAWClaimTable 
      SET  Processed = 1 
      WHERE ClaiMKey = @Name 
     END  

END 
+2

您确定您正在寻找正确的地方吗?通过SELECT为变量赋值不会返回结果集。 –

+2

你是否在你的sp上添加了'SET NOCOUNT ON;'? – Lamak

+0

这可能有所帮助:http://stackoverflow.com/questions/866484/how-to-suppress-the-select-output-of-a-stored-procedure-called-from-another-stor –

回答

0

使用游标循环通过你行!

SET @Lang = 0 
SET @Address = 'Import' 
SET @SaveMode = 0 
SET @ID = Null 

DECLARE my_cursor CURSOR FOR 
    SELECT LossDate, ClaimDate, OpenDate, ReceiVeDate, Name, Address, 
     Address1, City, State, PostalCode, Country 
    FROM RAWClaimTable 
    WHERE Processed = 0 
OPEN my_cursor 

FETCH NEXT FROM my_cursor 
INTO @LossDate, @ClaimDate, @OpenDate, @Receivedate, @Name, @Address, 
    @Address1, @City, @State, @PostalCode, @Country 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    BEGIN TRY 
    EXEC @RetStat = Usp_ProcessRawData @Lang, @Address, @SaveMode, @ID OUT, 
      @BranchSeqNo, @OriginalBranchSeqNo, @IncidentID, 
      @AssignmentTypeCode, @PartnershipID, @AccountID, 
    END TRY   

    BEGIN CATCH   
    SELECT @RetStat = @@Error 
     if @@Trancount > 0 rollback tran 
     IF @RetStat != 0 
      BEGIN 
      update RAWClaimTable set Errormessage = ERROR_MESSAGE() 
      where ClaiMKey = @Name 
      END 
    END CATCH 

    IF @ID IS NOT NULL 
     BEGIN 
      UPDATE RAWClaimTable 
      SET  ClaimID = @ID , 
        Processed = 1 
      WHERE ClaiMKey = @Name 
     END  
    ELSE 
     BEGIN 
      UPDATE RAWClaimTable 
      SET  Processed = 1 
      WHERE ClaiMKey = @Name 
     END  

    FETCH NEXT FROM my_cursor 
    INTO @LossDate, @ClaimDate, @OpenDate, @Receivedate, @Name, @Address, 
     @Address1, @City, @State, @PostalCode, @Country 
END