我有一个表car_rental
其中我试图检查每个元组的重叠日期,并提出一个EXEPTION错误,如果这些值与我的check_date
函数重叠。但是无论我做什么,我都会在函数的第一行收到语法错误。我究竟做错了什么?PostgresSQL检查日期和发生错误
CREATE FUNCTION check_date(IN i_sdate DATE, IN i_edate DATE, IN i_plate varchar(10), OUT overlap)
SET @i_sdate = start_date(i_sdate);
SET @i_edate = end_date(i_edate);
SET @i_plate = plate(i_plate);
BEGIN
SET overlap = SELECT CASE WHEN (
(@i_sdate BETWEEN start_date AND end_date AND @i_plate = plate FROM car_rental)OR
(@i_edate BETWEEN start_date AND end_date AND AND @i_plate = plate FROM car_rental)OR
(start_date BETWEEN @i_sdate AND @i_edate AND AND @i_plate = plate)
THEN
RAISE EXCEPTION 'unavailable --> %', plate
USING HINT = 'Car is unavailable';
)
看来您正在尝试使用MS SQL Server TSQL for PostgreSQL。尝试开始[这里](https://www.postgresql.org/docs/current/static/sql-createfunction.html),继续[here](https://www.postgresql.org/docs/current/static /xfunc.html)。 PS如果你提到一个错误 - 请提供它的文本。 – Abelisto
@Abelisto。 。 。这不完全是SQL Server语法。我想,我看到SQL Server,MySQL和Oracle的元素。 –
@GordonLinoff嗯......是的,知道这段代码的起源会很有趣。但是,对于我来说,'set @something = ...'是TSQL的标志(但我记得没有分号)。 – Abelisto