我有一個表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