Несколько вставок и выбор в одной хранимой процедуре - PullRequest
0 голосов
/ 16 октября 2010

Я хочу создать процедуру, которая будет

A) проверять, находится ли TicketNumberInput в таблице Tix_number.TicketNumber.

B), если она существует, обновите запись, чтобы установить UIDв @uid и установите для Claimdate значение GetDate ()

И ...

C) ВСТАВЬТЕ ЗАПИСЬ В ДРУГОЙ СТОЛ (ТАБЛИЦА ЖУРНАЛА ТРАНЗАКЦИЙ)

Если запись делаетсуществует, просто добавьте запись в журнал транзакций с STATUS = 2 (не удалось).

Пока это мой код, но, похоже, нет проблем с проверкой операторов IF И обновлением записи ANDвставка другой записи.Как мне добавить много проверок в утверждение.Конец Begin End не сработал

create procedure [dbo].[UpdateTicketNumber]
@TicketNumberInput uniqueidentifier, 
@UID   int
as 
IF EXISTS(
BEGIN
    SELECT *
    FROM [tixtowin].[dbo].[Tix_Number]
    where @TicketNumberInput = Tix_Number.TicketNumber)
    PRINT 'CORRECT RECORD'

    Update Tix_Number 
    Set Tix_Number.UID = @uid, ClaimDate = GETDATE()
    where TicketNumber = @TicketNumberInput

    /* Success - insert transaction message. Status = 1 */
    INSERT INTO [Tix_Transaction]
    ([Tix_Number],[UID], [status], [Datetime])
    VALUES
    (@TicketNumberInput, @UID, '1', GetDate())

    End
    ELSE

    /* Failed - insert transaction message. Status = 2 */
    INSERT INTO [Tix_Transaction]
    ([Tix_Number],[UID], [status], [Datetime])
    VALUES
    (@TicketNumberInput, @UID, '2', GetDate())

    PRINT 'INCORRECT RECORD'

СПАСИБО за помощь !!!

1 Ответ

4 голосов
/ 16 октября 2010

У вас нет теста как часть вашего ЕСЛИ.Вам нужно проверить, а затем сделать что-то:

create procedure [dbo].[UpdateTicketNumber] 
@TicketNumberInput uniqueidentifier,  
@UID   int 

as  
IF EXISTS (SELECT NULL
    FROM [tixtowin].[dbo].[Tix_Number] 
    where @TicketNumberInput = Tix_Number.TicketNumber) 
BEGIN 

    PRINT 'CORRECT RECORD' 

    Update Tix_Number  
    Set Tix_Number.UID = @uid, ClaimDate = GETDATE() 
    where TicketNumber = @TicketNumberInput 

    /* Success - insert transaction message. Status = 1 */ 
    INSERT INTO [Tix_Transaction] 
    ([Tix_Number],[UID], [status], [Datetime]) 
    VALUES 
    (@TicketNumberInput, @UID, '1', GetDate()) 

END 
ELSE 
BEGIN 
    /* Failed - insert transaction message. Status = 2 */ 
    INSERT INTO [Tix_Transaction] 
    ([Tix_Number],[UID], [status], [Datetime]) 
    VALUES 
    (@TicketNumberInput, @UID, '2', GetDate()) 

    PRINT 'INCORRECT RECORD' 
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...