Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 2 stored proc не работает нормално  [new]
jobo
Member

Откуда:
Сообщений: 5
привет
у меня ест stored proc для инсерт
но ест одно другая процедура для инсерт еррор на таблицу error
1-й работает нормално инсерт в таблице отлично работает
но 2 инсерт в еррор не работает
и еше я хочу получит когда будет еррор max(id) error таблицу
вот код два процедуры

1-й
ALTER PROCEDURE [dbo].[Sola_uspLogError] 
    @ErrorLogID [int] = 0 OUTPUT 
AS                               
BEGIN
    SET NOCOUNT ON;

    SET @ErrorLogID = 0;

    BEGIN TRY
        
        IF ERROR_NUMBER() IS NULL
            RETURN;

        
        IF XACT_STATE() = -1
        BEGIN
            PRINT '!!!!!!!!!!!!!!!!!!!!! ';
            RETURN;
        END

        INSERT ERROR(E_NUMBER ,
         E_STATE ,
         E_SEVERITY,
         E_LINE ,
         E_PROCEDURE ,
         E_MESSAGE )
    VALUES(
         ERROR_NUMBER()  
         ,ERROR_SEVERITY()  
        ,ERROR_STATE()   
        ,ERROR_PROCEDURE()  
        ,ERROR_LINE ()  
        ,ERROR_MESSAGE() 
        ) 

        
        SET @ErrorLogID = @@IDENTITY;
    END TRY
    BEGIN CATCH
        PRINT '??????????????: ';
        EXECUTE [dbo].[Sola_uspPrintError];
        RETURN -1;
    END CATCH
END;


и 2-й


ALTER  PROCEDURE [dbo].[INSE] 
   @MENU_NAME NVARCHAR(5), 
    @CAPTION NVARCHAR(5)
AS
BEGIN
    
SET XACT_ABORT ON;  
    BEGIN TRY
        BEGIN TRANSACTION;

       INSERT INTO REG.MENU
            (MENU_NAME
            ,CAPTION
            ) 
        VALUES (@MENU_NAME, @CAPTION);

        COMMIT TRANSACTION;
                

    END TRY
    BEGIN CATCH
  
    EXECUTE [dbo].[Sola_uspLogError] /*usp_GetErrorInfo*/;  
  
    IF (XACT_STATE()) = -1  
    BEGIN  
        PRINT  
            N'The transaction is in an uncommittable state.' +  
            'Rolling back transaction.'  
        ROLLBACK TRANSACTION;  
    END;  
  
    IF (XACT_STATE()) = 1  
    BEGIN  
        PRINT  
            N'The transaction is committable.' +  
            'Committing transaction.'  
        COMMIT TRANSACTION;     
    END;  
    END CATCH;
END;
22 авг 19, 22:27    [21956060]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
Сейчас-сейчас, только текст ошибки угадаем...
22 авг 19, 22:49    [21956072]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
jobo
Member

Откуда:
Сообщений: 5
Гавриленко Сергей Алексеевич,

да
такой прочедура у меня ест в update
мне должен получит инсерт в еррор
даже из таблицу еррор @@IDENTITY
но я получаю null потому что инсерт не работает

К сообщению приложен файл. Размер - 16Kb
22 авг 19, 23:10    [21956082]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
Чтобы что-то было в @return_value, надо сделать return это что-то из процедуры.
22 авг 19, 23:18    [21956085]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
jobo
Member

Откуда:
Сообщений: 5
Гавриленко Сергей Алексеевич
Чтобы что-то было в @return_value, надо сделать return это что-то из процедуры.


я изменил insert в процедуре [Sola_uspLogError] так

создал таблицу толко с столбцом error_number
и хотел бы всатвит там но все равно не делает инсерт и дает такой же резултат

create table test
(id int not null identity(1,1),error_num int null)

ALTER PROCEDURE [dbo].[Sola_uspLogError] 
    @ErrorLogID [int] = 0 OUTPUT 
AS                               
BEGIN
    SET NOCOUNT ON;

    SET @ErrorLogID = 0;

    BEGIN TRY
        
        IF ERROR_NUMBER() IS NULL
            RETURN;

        
        IF XACT_STATE() = -1
        BEGIN
            PRINT '!!!!!!!!!!!!!!!!!!!!! ';
            RETURN;
        END

        INSERT into test(error_num )
    VALUES(
         ERROR_NUMBER()        
        ) 

        
        SET @ErrorLogID = @@IDENTITY;
    END TRY
    BEGIN CATCH
        PRINT '??????????????: ';
        EXECUTE [dbo].[Sola_uspPrintError];
        RETURN -1;
    END CATCH
END;


и резултат тоже так

К сообщению приложен файл. Размер - 14Kb
23 авг 19, 00:02    [21956104]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
jobo
Member

Откуда:
Сообщений: 5
jobo,
к стати для удаления процедура так такой же проблем тоже
ALTER PROCEDURE [dbo].[REG_MENU_DELETE]
    
    
    @MENU_ID INT
     
AS
BEGIN
    SET NOCOUNT ON;

    BEGIN TRY
        BEGIN TRANSACTION;

            DELETE FROM REG.MENU
             WHERE MENU_ID=@MENU_ID
                 COMMIT TRANSACTION;
    END TRY
    BEGIN CATCH
        
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION;
        END
       
EXECUTE [dbo].[Sola_uspLogError] 
       
    END CATCH;
END;
23 авг 19, 00:07    [21956107]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
Если вы не читаете ответы, то форум вам ничем помочь не сможет.
23 авг 19, 00:14    [21956110]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
aleks222
Member

Откуда:
Сообщений: 952
Мне одному кажется, что процедуры тредстартера безумныбессмысленны, чуть более, чем полностью?
23 авг 19, 05:47    [21956140]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2394
aleks222
Мне одному кажется, что процедуры тредстартера безумныбессмысленны, чуть более, чем полностью?

ну, он за них деньги получает. видимо )
23 авг 19, 09:49    [21956213]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Поток сознания... Показывает код одних процедур, а выполняет другие.
23 авг 19, 13:31    [21956439]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
jobo
Гавриленко Сергей Алексеевич
Чтобы что-то было в @return_value, надо сделать return это что-то из процедуры.


я изменил insert в процедуре [Sola_uspLogError] так

создал таблицу толко с столбцом error_number
и хотел бы всатвит там но все равно не делает инсерт и дает такой же резултат

create table test
(id int not null identity(1,1),error_num int null)

ALTER PROCEDURE [dbo].[Sola_uspLogError] 
    @ErrorLogID [int] = 0 OUTPUT 
AS                               
BEGIN
    SET NOCOUNT ON;

    SET @ErrorLogID = 0;

    BEGIN TRY
        
        IF ERROR_NUMBER() IS NULL
            RETURN;

        
        IF XACT_STATE() = -1
        BEGIN
            PRINT '!!!!!!!!!!!!!!!!!!!!! ';
            RETURN;
        END

        INSERT into test(error_num )
    VALUES(
         ERROR_NUMBER()        
        ) 

        
        SET @ErrorLogID = @@IDENTITY;
    END TRY
    BEGIN CATCH
        PRINT '??????????????: ';
        EXECUTE [dbo].[Sola_uspPrintError];
        RETURN -1;
    END CATCH
END;


и резултат тоже так


Есть такая версия: вставлят и вынимает
23 авг 19, 15:58    [21956593]     Ответить | Цитировать Сообщить модератору
 Re: 2 stored proc не работает нормално  [new]
пятый2
Member

Откуда:
Сообщений: 148
Кто-то нейросети обучает на нашем любимом форуме....
29 авг 19, 12:41    [21959726]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить