T- SQL Ошибка хранимой процедуры: неверный синтаксис рядом с ключевым словом «END». Серьезность 15 PROCEDURE_1 - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующая хранимая процедура для SQL сервера, который не работает. Я проверил порядок начала и конца снова и снова, но не смог найти причину ошибки.

У вас есть идеи? Заранее спасибо!

IF OBJECT_ID('dbo.PROCEDURE_1') IS NOT NULL
    DROP PROCEDURE dbo.PROCEDURE_1
GO

CREATE PROCEDURE [dbo].[PROCEDURE_1]
AS

    BEGIN

        DECLARE

        @number_of_active_members numeric(7)


        BEGIN TRY

            DECLARE
                count_active_members CURSOR LOCAL FOR
                 SELECT ISNULL(COUNT(*), 1)
                 FROM TABLE_1 
                 WHERE MEMBER_STATUS = '1'

            OPEN count_active_members   

            FETCH count_active_members
                INTO @number_of_active_members

            CLOSE count_active_members

            DEALLOCATE count_active_members


            UPDATE TABLE_2
            SET NUMBER_FROM=0,NUMBER_TO = (@number_of_active_members / 5 )

        END TRY

    END

GO  

1 Ответ

2 голосов
/ 24 марта 2020

Если вы используете BEGIN TRY, то у вас также есть , чтобы за ним следовал блок CATCH:

BEGIN TRY  
     { sql_statement | statement_block }  
END TRY  
BEGIN CATCH  
     [ { sql_statement | statement_block } ]  
END CATCH  
[ ; ]  

Непонятно, что вы пытались сделать только с голым TRY, поэтому может оказаться, что решение состоит в том, чтобы полностью удалить его вместо добавления CATCH.

Также неясно, почему вы пишете кропотливо процедурный код с использованием курсоров на основанном на множестве языке , таком как T- SQL, который может иметь UPDATE, ссылающийся на несколько таблиц как один оператор.

...