2016-11-17 44 views
-1

我有一個包含變量聲明爲DECLARE @@var_1 as bigint,它包含一個while循環WHILE @@FETCH_STATUS 現在使用NPoco引發例外Must declare the scalar variable "@FETCH_STATUS". 如何解決它執行這樣的腳本的SQL腳本?主要目的是在SQL Server和ORACLE中使用相同的腳本。SQL腳本光標,變量和NPoco

DECLARE @@LayerId bigint; 
DECLARE @@DId as bigint; 
DECLARE @@DataSegment as CURSOR; 
DECLARE @@IterationNo as int; 

IF OBJECT_ID(N'DataSegment') IS NOT NULL AND 
    OBJECT_ID(N'Layer') IS NOT NULL 
BEGIN 
    SET @@IterationNo = 0; 
    SET @@DataSegment = CURSOR FORWARD_ONLY FOR 
    SELECT Id FROM DataSegment 

    OPEN @@DataSegment; 
    FETCH NEXT FROM @@DataSegment INTO @@DId 
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
     SET @@IterationNo = @@IterationNo + 1; 
     SET @@LayerId = 9; 
     PRINT @@LayerId; 


    --Insert parent RouteVersion 
     INSERT INTO Layer Values(@@LayerId,'Migration',6,'Trace', 
     'Route','TEST', @@DId, NULL, @@LayerId, 9) 
      Print 'Iter is ' ; 
     Print @@IterationNo 

    --fetch next 
     FETCH NEXT FROM @@DataSegment INTO @@DId; 
    END 
    CLOSE @@DataSegment; 
    DEALLOCATE @@DataSegment; 

END 

在此先感謝。

+0

你能否在這裏暗示你的代碼 – mansi

+0

@MansiChaudhari現在檢查。 –

+0

請嘗試使用'@@ Fetch_Status'。 – FDavidov

回答

0

試試這個

DECLARE @LayerId bigint; 
DECLARE @DId as bigint; 
DECLARE @DataSegment as CURSOR; 
DECLARE @IterationNo as int; 

IF OBJECT_ID(N'DataSegment') IS NOT NULL AND 
    OBJECT_ID(N'Layer') IS NOT NULL 
    BEGIN 
SET @IterationNo = 0; 
SET @DataSegment = CURSOR FORWARD_ONLY FOR 
SELECT ID FROM DataSegment  

OPEN @DataSegment 
FETCH NEXT FROM @DataSegment INTO @DId 

WHILE (@@FETCH_STATUS = 0) 
BEGIN 
    SET @IterationNo = @IterationNo + 1; 
    SET @LayerId = 9; 
    PRINT @LayerId; 


Insert parent RouteVersion 
    INSERT INTO Layer Values(@LayerId,'Migration',6,'Trace', 
    'Route','TEST', @DId, NULL, @LayerId, 9) 
     Print 'Iter is ' ; 
    Print @IterationNo 

    FETCH NEXT FROM @DataSegment INTO @DId; 
END 
CLOSE @DataSegment; 
DEALLOCATE @DataSegment; 
END 

OR

更改.NET連接設置爲

數據庫=數據庫;數據源=本地主機;用戶ID =根;密碼=通行;允許用戶變量= True

然後試試你自己的代碼

+0

有了這個,我得到了一個'參數'@LayerId'指定的異常,但沒有一個傳入的參數具有這個名稱的屬性' –

+0

是'@layerid'autoincrement? – mansi

+0

如果是,那麼不通過它,如果沒有,那麼在聲明 – mansi