CREATE PROCEDURE (SOME_ID INTEGER)
AS
  DECLARE CURSOR CUR;
BEGIN
  IF (SOME_ID IS NULL)
    CUR = CURSOR FOR SELECT * FROM MY_TABLE;
  ELSE // IF (SOME_ID IS NOT NULL)
    CUR = CURSOR FOR SELECT * FROM MY_TABLE WHERE ID = :SOME_ID;

  <ВСЁ ТОТ ЖЕ КОД, НО В ЕДИНСТВЕННОМ ЭКЗЕМПЛЯРЕ>
END

хотел сказать

CREATE PROCEDURE (SOME_ID INTEGER)
AS
  DECLARE CURSOR CUR;
BEGIN
  IF (SOME_ID IS NULL)
    CUR = CURSOR FOR SELECT * FROM MY_TABLE;
  ELSE // IF (SOME_ID IS NOT NULL)
    CUR = CURSOR FOR SELECT * FROM MY_TABLE WHERE ID = :SOME_ID;

  FOR FETCH FROM CUR DO
    <ВСЁ ТОТ ЖЕ КОД, НО В ЕДИНСТВЕННОМ ЭКЗЕМПЛЯРЕ>
END


Ответить