首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server上的语法错误

Server上的语法错误
EN

Stack Overflow用户
提问于 2011-03-30 19:22:21
回答 4查看 2.5K关注 0票数 2

这可能是一个愚蠢的语法错误,但我只是继续阅读我的过程,但我不知道我的错误在哪里。

Msg 156,15级,状态1,41号线

关键字“FOR”附近的语法不正确。

这是我的代码:

代码语言:javascript
运行
复制
alter procedure LockReservation as
DECLARE @edition_id tinyint, @stockid  tinyint;
DECLARE @creservation CURSOR FOR select edition_id from reservation where (date_fin - GETUTCDATE()) <= 12;
open creservation;
while @@fetch_status = 0
BEGIN
    fetch creservation into @edition_id;
    DECLARE @cstock CURSOR 
        FOR select id from stock where edition_id = @edition_id;
    open cstock;
    while @@fetch_status = 0
    BEGIN
        fetch cstock into @stockid;
        select stock_id from location where location.stock_id = @stockid and archivage = 0
        if @@rowcount = 0
        BEGIN
             insert into stocks_reserves(id, date_ajout, usure, suppression, edition_id) 
                    Select id, date_ajout, usure, suppression, edition_id 
                from stock 
                where stock.id = @stockid
        END
    END
    CLOSE cstock
    DEALLOCATE cstock
END
CLOSE creservation
DEALLOCATE creservation

有人能帮我吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-30 19:26:30

不要在光标名称中使用@符号。

票数 13
EN

Stack Overflow用户

发布于 2011-03-30 19:24:47

去掉光标--使用基于集合的解决方案。

基本上你是这样做的:

代码语言:javascript
运行
复制
insert into stocks_reserves
(id, date_ajout, usure, suppression, edition_id) 
Select id, date_ajout, usure, suppression, edition_id 
from stock 
where stock.id in
(
    select stock_id 
    from location 
    where location.stock_id in
    (
        select id 
        from stock 
        where edition_id in
        (
            select edition_id 
            from reservation 
            where (date_fin - GETUTCDATE()) <= 12
        )
    )
    and archivage = 0
)

您可以使用“存在”替换IN,以更快地处理插入。

更好的是,做INNER JOIN以获得最好的性能。

票数 3
EN

Stack Overflow用户

发布于 2011-03-30 19:28:00

命名您的游标保留而不是@保留

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5491181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档