2016-11-17 45 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