You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be nice to have cursor variables and assign them diffirent cursors. For example
EXECUTE BLOCK (
START_DATE TIMESTAMP,
END_DATE TIMESTAMP)
RETURNS (
ID INTEGER,
NAME VARCHAR(100))
AS
DECLARE CUR CURSOR (INTEGER, VARCHAR(100));
BEGIN
IF (START_DATE IS NULL AND END_DATE IS NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE;
ELSE IF (START_DATE IS NOT NULL AND END_DATE IS NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE WHERE CREATION_DATE >= :START_DATE;
ELSE IF (START_DATE IS NULL AND END_DATE IS NOT NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE WHERE CREATION_DATE <= :END_DATE;
ELSE IF (START_DATE IS NOT NULL AND END_DATE IS NOT NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE WHERE CREATION_DATE BETWEEN :START_DATE AND :END_DATE;
FOR FETCH FROM CUR INTO :ID, :NAME DO
BEGIN
...
SUSPEND;
END
--OR
OPEN CUR;
WHILE (1=1) DO
BEGIN
FETCH CUR INTO :ID, :NAME;
IF(0 = ROW_COUNT)
BREAK;
...
END
CLOSE CUR;
END
The text was updated successfully, but these errors were encountered:
Submitted by: Alexander Tyutik (tut)
Votes: 2
It would be nice to have cursor variables and assign them diffirent cursors. For example
EXECUTE BLOCK (
START_DATE TIMESTAMP,
END_DATE TIMESTAMP)
RETURNS (
ID INTEGER,
NAME VARCHAR(100))
AS
DECLARE CUR CURSOR (INTEGER, VARCHAR(100));
BEGIN
IF (START_DATE IS NULL AND END_DATE IS NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE;
ELSE IF (START_DATE IS NOT NULL AND END_DATE IS NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE WHERE CREATION_DATE >= :START_DATE;
ELSE IF (START_DATE IS NULL AND END_DATE IS NOT NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE WHERE CREATION_DATE <= :END_DATE;
ELSE IF (START_DATE IS NOT NULL AND END_DATE IS NOT NULL)
CUR = CURSOR FOR SELECT ID, NAME FROM MY_TABLE WHERE CREATION_DATE BETWEEN :START_DATE AND :END_DATE;
FOR FETCH FROM CUR INTO :ID, :NAME DO
BEGIN
...
SUSPEND;
END
--OR
OPEN CUR;
WHILE (1=1) DO
BEGIN
FETCH CUR INTO :ID, :NAME;
IF(0 = ROW_COUNT)
BREAK;
...
END
CLOSE CUR;
END
The text was updated successfully, but these errors were encountered: