逐行循环遍历表 T-SQL

Div*_*van 1 t-sql sql-server

在 T-SQL 中,我想通过逐行读取来循环访问存储过程中的表。

DECLARE @IMAX INT,
        @ICOUNT INT,
        @INTERFACE_ID_36 INT,
        @INTERFACE_ID_38 INT

SELECT * FROM INTERFACE_36_DATA

SET @IMAX = @@ROWCOUNT
SET @ICOUNT = 1

WHILE(@ICOUNT <= @IMAX)
    BEGIN
        SELECT @INTERFACE_ID_36 = Interface_ID
        FROM INTERFACE_36_DATA
        WHERE ROW_NUMBER() OVER (ORDER BY id) AS  = @ICOUNT   --syntax error here

            IF @INTERFACE_ID_36 = 10
                SET @INTERFACE_ID_38 = 0
            ELSE IF @INTERFACE_ID_36 = 
Run Code Online (Sandbox Code Playgroud)

Ath*_*afa 5

我建议使用 Cursors 更快地重写它:

DECLARE @IMAX INT,
        @ICOUNT INT,
        @INTERFACE_ID_36 INT,
        @INTERFACE_ID_38 INT

DECLARE db_cursor CURSOR FOR  
SELECT Interface_ID FROM INTERFACE_36_DATA  

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @INTERFACE_ID_36   

WHILE @@FETCH_STATUS = 0   
BEGIN
       SELECT @INTERFACE_ID_36
       -- All your other selects  

       FETCH NEXT FROM db_cursor INTO @INTERFACE_ID_36   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor
Run Code Online (Sandbox Code Playgroud)