2013-05-15 78 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