Пример:

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 то все выполнится нормально.

Что это?


Ответить