Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Oracle _ Konwersja varchar do daty

Napisany przez: pawstrze 4.06.2016, 16:27:35

Cześć,
potrzebuję stworzyć funkcję, która jako parametr przyjmie datę, po to by potem w ciele funkcji wyciągnąć z bazy te rekordy, które będą odpowiadały miesiącowi podanymi w argumencie.
Czyli. Wywołuję funkcję np FUNKCJA(16/04) - czyli chodzi mi o kwiecień 2016 i potem chciałbym zamienić ten varchar na datę. Niestety to nie wychodzi.

  1. CREATE OR REPLACE procedure rozkladWMiesiacu(miesiac char)
  2. IS
  3. test number;
  4. a date:=TO_DATE(miesiac, 'yy/mm');
  5. wiersz wydatki%rowtype;
  6. cursor zapytanie IS SELECT * FROM wydatki WHERE dat = a;
  7.  
  8. begin
  9. dbms_output.put_line(miesiac);
  10. dbms_output.put_line(a);
  11. open zapytanie;
  12. loop
  13.  
  14. fetch zapytanie INTO wiersz;
  15. exit when zapytanie%notfound;
  16. dbms_output.put_line(wiersz.wyd_id ||' '||
  17. wiersz.kat_id ||' '|| wiersz.kwota ||' '|| wiersz.czl_id ||' '|| wiersz.dat ||' '|| wiersz.nazwa);
  18. dbms_output.put_line(wiersz.wyd_id);
  19. dbms_output.put_line(wiersz.wyd_id);
  20.  
  21. end loop;
  22. test:=2;
  23. end;


Być może kod jest mocno chaotyczny - dopiero zaczynam SQL-a ale nie rozumiem dlaczego nie działa. Zauważyłem, że ta instrukcja
  1. dbms_output.put_line(a);
wyrzuca datę w formacie yy/mm/dd czyli ta konwersja
  1. a date:=TO_DATE(miesiac, 'yy/mm');
nie zadziałał tak jak oczekiwałem.

Gdzie leży problem?

Napisany przez: tdobe 11.08.2016, 14:23:20

"a" jest typu "DATE" a dbms_output.put_line oczekuje tekstu. po zatym jak ty chcesz miesiac przekonwertowac na datę? - nie da się...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)