4

あるテーブルの行を別のテーブルに挿入したい。そのために、私は以下の手順を持っています。

ALTER PROCEDURE LOADDATA_a
AS 
BEGIN

TRUNCATE TABLE STIDENT_A
DECLARE @SID INT
DECLARE @SNAME VARCHAR(50)
DECLARE @SUB VARCHAR(50)
DECLARE @MARKS INT

DECLARE LOAD_DATA CURSOR FAST_FORWARD FOR  
SELECT SID,SNAME,SUB,MARKS 
FROM student 

OPEN LOAD_DATA   
FETCH NEXT FROM LOAD_DATA INTO @SID,@SNAME,@SUB,@MARKS

WHILE @@FETCH_STATUS = 0   
BEGIN
    BEGIN TRANSACTION

    INSERT INTO STIDENT_A(SID,SNAME,SUB,MARKS) VALUES (@SID,@SNAME,@SUB,@MARKS)

    IF @@ERROR != 0
    BEGIN
        ROLLBACK TRANSACTION
        RETURN
    END
    ELSE
    BEGIN
        COMMIT TRANSACTION
    END
    FETCH NEXT FROM LOAD_DATA INTO @SID,@SNAME,@SUB,@MARKS
END

CLOSE LOAD_DATA   
DEALLOCATE LOAD_DATA

END

行の挿入に失敗すると、カーソルが失敗してそこで停止しますが、続行するにはカーソルが必要です。どうやってするか?

4

2 に答える 2

2

これを試して:-

DECLARE @intFlag INT
 SET @intFlag = 0
WHILE (@intFlag <=5)
BEGIN
    begin Try
        if @intFlag = 3
        begin
            SET @intFlag = @intFlag + 'A'
        End
    Else
        begin
            PRINT @intFlag
        end
    End Try

    Begin Catch
        --print 'Error'
        -- continue
    End catch
SET @intFlag = @intFlag + 1
END
GO 
于 2014-02-14T12:53:04.920 に答える