Пример:
CREATE TABLE A (ID INTEGER NOT NULL PRIMARY KEY);
INSERT INTO A VALUES (1);
INSERT INTO A VALUES (2);
INSERT INTO A VALUES (3);
CREATE TABLE B(
ID INTEGER NOT NULL PRIMARY KEY,
FK INTEGER REFERENCES A (ID),
S INTEGER);
INSERT INTO B VALUES (1, 1, 1);
INSERT INTO B VALUES (2, 1, 1);
INSERT INTO B VALUES (3, 2, 1);
INSERT INTO B VALUES (4, 3, 1);
CREATE PROCEDURE P (ID INTEGER)
RETURNS (KEY INTEGER, S INTEGER)
AS
BEGIN
KEY = :ID;
SELECT SUM(S) FROM B WHERE FK = :ID
INTO :S;
SUSPEND;
END
При выполнении запроса:
SELECT
A.ID,
P.S
FROM
A A JOIN P(A.ID) ON A.ID = P.KEY
Получаем ошибку:
no current record for fetch operation
SQLCode: -508; GDSCode: 335544348
Если JOIN заменить на LEFT JOIN то все выполнится нормально.
Что это?