Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不希望选择显示值的变量_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql 不希望选择显示值的变量

Sql 不希望选择显示值的变量,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,这可能很简单,但我一直很难弄清楚。 我有一段代码(类似于下面的代码),我通过select将一组值分配给一组变量,它完成了任务,但当我运行它时,我得到的结果集导致我的SSM崩溃。有没有办法避免这种情况 DECLARE @Name VARCHAR(100) DECLARE @LastName VARCHAR(100) DECLARE @Address VARCHAR(100) SELECT TOP 1 @Name = Name @LastName = LastName @Address = Ad

这可能很简单,但我一直很难弄清楚。 我有一段代码(类似于下面的代码),我通过select将一组值分配给一组变量,它完成了任务,但当我运行它时,我得到的结果集导致我的SSM崩溃。有没有办法避免这种情况

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行,并将这些变量传递给存储过程,每个top 1 select语句都会抛出一个结果集,导致我的SSM崩溃。我真的不需要显示select top 1值,知道如何摆脱它吗

任何帮助都将不胜感激

---正如下面所要求的代码,我已经散列了一些东西,但这就是它,我正在运行它从查询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 

使用光标在您的行中循环

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 

你确定你找对地方了吗?通过SELECT为变量赋值不会返回结果集。是否添加了
set NOCOUNT ON在您的sp顶部?这可能会有所帮助:@user2284363那么我最好发布您的sp代码,以及您执行它的方式您确定sp Usp_ProcessRawData没有选择任何数据吗?