Синтаксис хранимой процедуры Firebird - отклонение; - PullRequest
0 голосов
/ 21 марта 2011

Я пытаюсь создать следующую хранимую процедуру в Firebird, но я, должно быть, неправильно понимаю синтаксис, поскольку он жалуется следующим образом:

Statement #3:
SQL error code = -104
Token unknown - line 23, column 46
;

Сама хранимая процедура выглядит следующим образом - что я делаюне так?

SET AUTODDL OFF;
SET TERM ^ ;

CREATE PROCEDURE SP_KPI
(
  STAFFID INTEGER,
  FROM_DATE DATE,
  TO_DATE DATE
)
RETURNS
(
  FORENAME VARCHAR(50),
  SURNAME VARCHAR(50),
  STATUSNAME VARCHAR(50),
  STATUS_COUNT INTEGER
)
AS
BEGIN
   SELECT s.forename, s.surname, v2.statusname, count(v2.statusname) as STATUS_COUNT
     FROM Vacconthist v
     JOIN Staff s ON v.staffid=s.staffid
     JOIN Vacstatus v2 ON v2.statusid=v.status
    WHERE (s.staffid = 867) AND (v.LASTUPDATE BETWEEN '01-Jan-2011' AND '08-Mar-2011') AND (v.status > 9 AND v.status < 99999)
GROUP BY s.forename, s.surname, v2.statusname;
END
^

SET TERM ; ^
COMMIT WORK;

1 Ответ

1 голос
/ 21 марта 2011

Вы пропустили предложение INTO!выбор должен выглядеть так:

   SELECT s.forename, s.surname, v2.statusname, count(v2.statusname) as STATUS_COUNT
     FROM Vacconthist v
     JOIN Staff s ON v.staffid=s.staffid
     JOIN Vacstatus v2 ON v2.statusid=v.status
    WHERE (s.staffid = 867) AND (v.LASTUPDATE BETWEEN '01-Jan-2011' AND '08-Mar-2011') AND (v.status > 9 AND v.status < 99999)
GROUP BY s.forename, s.surname, v2.statusname INTO :FORENAME, :SURNAME, :STATUSNAME, :STATUS_COUNT;
...