Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 23

Witam!

Mam problem z procedurą, podejrzewam, że banalny, ale utknąłem i męczę się z nim już ze dwie godziny:

 

 

 

Czemu to C1 is not valid?

Jak wywalę IFa i zostawię samo OPEN, to działa (niezależnie od wielkości liter c1, C1 równie dobrze działa).

If jest w sumie pomijalny, ale ten sam błąd zgłasza instrukcja WHILE dwie linijki niżej, a tam już użycie predykatu jest mi potrzebne.

Będę niezmiernie wdzięczny za jakąkolwiek wskazówkę!

 

PS:

 

 

W tym wypadku, przechodzi przez OPEN i FETCH i wywala się w linii 23 (WHILE (C1 IS NOT FOUND) DO) z tym samym komunikatem:

"C1" is not valid in the context where it is used...

Tomasz_Stereńczak
  • Zapytał
  • @ Tomasz_Stereńczak | 29.03.2017
    • lider
    • 3
    • 0
    • 0

Odpowiedź (1)

  • 0

Panie Tomaszu.

Sygnalizowany błąd pojawia się, gdyż w predykacie w instrukcjach IF oraz WHILE używa pan nazwy kursora (C1), a w tym miejscu dopuszczalne są tylko:

- nazwa zmiennej typu CURSOR,

- nazwa parametru wejściowego typu CURSOR zdefiniowanego wśród parametrów wywołania procedury.

Opis i przykład użycia znajdzie Pan w dokumentacji:

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0054736.html

Przykład tam zawarty jest najgorszy i najlepszy zarazem. Najgorszy, bo nazwa "C1" jest tam używana jako: nazwa kolumny w tabeli, nazwa kursora i nazwa zmiennej typu CURSOR, co utrudnia nieco zrozumienie. Najlepszy z tego samego powodu, gdyż pokazuje, że ta sama nazwa może być użyta w różnych miejscach i jest poprawnie rozpoznawana w zależności od miejsca użycia.

Pozdrawiam.
Marek Raczyński.

 

  • Odpowiedział
  • @ | 30.03.2017
  • TRENER MODERATOR ALTKOM AKADEMII