我的存储过程出现此错误。我的ibm db2似乎没有阅读END IF;
语句。
我使用Windows 10作为我的db2。
错误讯息:
SQL0104N意外的令牌" END @"发现在" _Details)"之后。预期 令牌可能包括:" END IF"。
我的代码:
CREATE PROCEDURE SeatPricing (IN seat_num varchar(2), ticket_id varchar(10))
BEGIN
IF seat_num LIKE 'A_' THEN
UPDATE Ticket_Details
SET seat_price = 500.00
WHERE ticket_id = (SELECT ticket_id
FROM Ticket_Details);
UPDATE Ticket
SET seat_price = 500.00
WHERE ticket_id = (SELECT ticket_id
FROM Ticket);
ELSE
UPDATE Ticket_Details
SET seat_price = 300.00
WHERE ticket_id = (SELECT ticket_id
FROM Ticket_Details);
UPDATE Ticket
SET seat_price = 300.00
WHERE ticket_id = (SELECT ticket_id
FROM Ticket);
END IF;
END@
/
答案 0 :(得分:2)
您的存储过程存在多个问题:
我建议这段代码:
CREATE PROCEDURE SeatPricing (IN seat_num varchar(2),IN ticketid varchar(10))
BEGIN
DECLARE VALUETOSET decimal(5, 2);
IF seat_num LIKE 'A_' THEN
SET VALUETOSET= 500.00 ;
ELSE
SET VALUETOSET= 300.00 ;
END IF ;
UPDATE Ticket_Details SET seat_price = VALUETOSET and ticket_id = ticketid;
UPDATE Ticket SET seat_price = VALUETOSET and ticket_id = ticketid;
END
答案 1 :(得分:0)
错误消息:SQL0104N发现了一个意外的令牌“END @” “_细节)”。预期的代币可能包括:“END IF”。
请务必参阅 creating procedure 的语法。您需要使用可选END
仅 <procedure-name>
结束您的程序。
但是,您最后使用了END@
,END
或END SeatPricing
。
END - 结束块的必需关键字。 您可以选择 指定程序的名称。