IF/CASE w WHERE w procedurze

0

Szanowni forumowicze,
Mam problem z klauzulą CASE w WHERE, otóż nie widzi mi zmiennej wejściowej.

-- (...)
begin
FOR
  SELECT K.ID_KARTOTEKA, K.NAZWADL, K.INDEKS, K.DATAZALOZENIA, :DATA as DATASPR
  FROM KARTOTEKA K
  WHERE (
    K.DATAZALOZENIA <
    CASE DATASPR
    WHEN NULL THEN '3011-11-11'
    ELSE :DATA
    END
    )
INTO :ID_KARTOTEKA, :NAZWADL, :INDEKS, :DATAZALOZENIA, :DATAOUT
DO
BEGIN
  suspend;
END
end
 

Wywala mi, że kolumna DATASPR nie istnieje. Utworzyłem ją sztucznie, ponieważ gdy w CASE używałem bezpośrednio :DATA też mi wywalało taki błąd.

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
DATASPR.
At line 17, column 5.

Domyślam się, że idę w stronę przepaści, można więc to inaczej zrobić?

Co ciekawe, taka rzecz jest możliwa w MS SQL:
http://stackoverflow.com/questions/87821/sql-if-clause-within-where-clause

No, ale to mnie nie tyczy:-)

Dziękuję serdecznie,
A.

0
CREATE PROCEDURE NEW_PROCEDURE (
    par1 varchar(10))
as
declare variable zm1 integer;
begin
  select id from tab where name < case when :par1 is null then 'dupa' else :par1 end into zm1;
  suspend;
end

działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1