Funkcja PLSQL ma zwrócić DATE.

0

Mam takie zagadnienie, że chciałbym w funkcji PLSQL zwrócić datę (DATE) tylko żeby wyświetlił mi się pełny miesiąc np. 20 listopada 2014.
Może jakaś podpowiedź ?

Pozdrawiam.
P.

0

Tak tylko rzuce, może na coś naprowadzi ten link http://www.techonthenet.com/oracle/functions/to_date.php

0

Taka podpowiedź:

 
SET serveroutput ON

declare

info date := sysdate;

begin

dbms_output.put_line(to_char(info, 'DD MONTH YYYY'));

end;

Teraz musisz z tego zrobić funkcje. W moim wypadku data jest konwertowana z DATE do CHAR.

0

dzięki za podpowiedzi ale może doprecyzuje o co dokładnie chodzi.
A więc ma to być tego typu funkcja:

create function moja_data(v_tekst in char)
return date
is
v_data date;
begin
-- tutaj jakiś kodzik
return v_data;
end;
/

W wyniku ma się pojawić np. 20 listopada 2014.

0

A, to o tym piszą chyba tutaj http://www.oracle.com/technetwork/issue-archive/2012/12-jan/o12plsql-1408561.html ... Od "Use TO_CHAR to display the full names of both the day and the month in the date: .... ". Chyba, że dalej nie rozumiem :)

0

Odpowiedź już masz w tym temacie. Poczytaj linki:)

0

Na szybko poradziłem sobie z DBMS_OUTPUT.PUT_LINE.

create or replace function pesel_data(pesel in char)
return date
is
v_data date;
v_pomoc date;
begin
v_data:= null;
v_pomoc:=substr(pesel,1,6);
DBMS_OUTPUT.PUT_LINE(to_char(v_pomoc,'dd month yyyy'));
return v_data;
end;
/
show errors

ale wydaje mi się to mało eleganckie. Wolał bym to zwrócić w return.
Jeszcze pomyślę albo może ktoś jeszcze coś podpowie. :)

0

Witam,

zrobiłbym to w ten sposób :

create or replace function pesel_data(pesel in varchar2)
return varchar2
is
v1 varchar2(10);
v2 varchar2(20);
begin
v1:=substr(pesel,1,6);
V2:=to_char(to_date('19'||v1,'yymmdd'),'dd month yyyy');
return v2;
end;
/

Wywołanie funkcji:

select pesel_data('86043056970') from dual

Jest jedna wada mojego rozwiązania , prawidłowo pokazuje przekonwertowany pesel dla ludzi urodzonych w XX wieku :-P.
Jeżeli chcesz prawidłowe dane dla całej populacji to pokombinuj z funkcjami to_date i to_char, możesz także obsłużyć to funkcją CASE. Warto zauważyć ze ww rozwiązanie działa dla najliczniejszej grupy ludzi na świecie :D.

Pozdrawiam

0

Dzięki @plug, problem całej populacji mam rozwiązany :)
Chodzi o to, że funkcja ma zwrócić DATE .

0

Wydaje mi się, że wartości typu DATE, Oracle wypluwa tylko w formacie 'YYYY/MM/DD'.

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