<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Zmiana funkcji na postgresową]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=437</link>
		<description><![CDATA[Najświeższe odpowiedzi w Zmiana funkcji na postgresową.]]></description>
		<lastBuildDate>Sun, 09 May 2010 13:59:24 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2033#p2033</link>
			<description><![CDATA[Dzięki, potestuję.

Jeżeli mi coś z tego wyjdzie to się tym podzielę]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sun, 09 May 2010 13:59:24 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2033#p2033</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2032#p2032</link>
			<description><![CDATA[Nie kojarzę takiej funkcjonalności wbudowanej w silnik postgresa. Ale możesz doinstalować
debugger
[url]http://pgfoundry.org/projects/edb-debugger/[/url]
Sam osobiście tego nie używałem. Możliwe że debugowanie przy użyciu tego debuggera i pgadmina będzie prostsze.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sun, 09 May 2010 13:21:30 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2032#p2032</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2031#p2031</link>
			<description><![CDATA[Super, że sie rozumiemy i dzięki za wyrozumiałość

Jeszcze tylko powtórze swoje wcześniejsze pytanie czy jest możliwość wykonania krokowego funkcji, ( w Accessie F8 Step Into) aby po kolei zobaczyc co funkcja robi i jakie przyjmuje wartości, jeżeli tak to w jakim edytorze i w jaki sposób to zrobić?]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sun, 09 May 2010 13:12:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2031#p2031</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2030#p2030</link>
			<description><![CDATA[A, no to się nie zrozumieliśmy :).

Co do warunku to poprawnie skladnowo bedzie tak
[code]
IF zm_nr_kolejny=111 then
       nr_pracownika := zm_pracownik_id;
       nr_kolejny := 654
else
       nr_pracownika := zm_pracownik_id;
       nr_kolejny := zm_nr_kolejny
END IF
[/code]
Ale jeśli mówisz o warunku który być użyty w zapytaniu SELECT to i tak będziesz pewnie musiał skleić takie zapytanie tak jak w twoim przykładzie z pierwszego komentarza gdzie budujesz dynamicznie warunki WHERE.
W sumie to i tak wszystko zależy od konkretnego przypadku i nie da sie odpowiedzieć na tak postawione pytanie
[quote]
Pytam na przyszłość gdyby w innej funkcji zaszła potrzeba zastosowania jakiegokolwiek warunku w zapytaniu. 
[/quote]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sun, 09 May 2010 13:06:46 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2030#p2030</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2029#p2029</link>
			<description><![CDATA[Jeżeli chodzi o tę funkcje to jest wszystko ok i juz o niej nie mówimy. 
Pytam na przyszłość gdyby w innej funkcji zaszła potrzeba zastosowania jakiegokolwiek warunku w zapytaniu. Jeżeli piszesz że IF byłby lepszy to zakładm, że tak było by dobrze.

........where
IF zm_nr_kolejny=111 then 
       nr_pracownika=zm_pracownik_id and nr_kolejny=654
else 
       nr_pracownika=zm_pracownik_id and nr_kolejny=zm_nr_kolejny
END IF]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sun, 09 May 2010 09:43:31 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2029#p2029</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2028#p2028</link>
			<description><![CDATA[?!
Tylko że żaden warunek na strKryterium nie jest tu potrzebny.
Już napisaliśmy że zamiast CASE/IF wystarczy napisać
[code]
nr_pracownika=zm_pracownik_id and nr_kolejny=zm_nr_kolejny
[/code]
i już się z tym zgodziłeś. A jak spojrzysz na funkcję którą zaproponowałem to zauważysz że ten warunek umieściłem w zapytaniu SELECT.
Więc funkcja którą Ci podałem powinna robić dokładnie to samo co twoja funkcja, bez żadnych dodatkowych if'ów i case'ów.
Czy przeanalizowałeś dokładnie funkcję, którą napisałem i to jak działa? Jeśli nie, to zrób to i napisz jeśli nie będzie działała poprawnie. Jeśli natomiast już sprawdziłeś jak działa i masz jakieś konkretne uwagi do jej działania to napisz te uwagi tu.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sun, 09 May 2010 08:55:39 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2028#p2028</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2027#p2027</link>
			<description><![CDATA[Ok, to co bys proponował żeby zrobić ten warunek w zapytaniu (strkryterium) jaki on by nie był, ale żeby jakiś był dla przykładu, jeżeli CASE nie jest odpowiedni to jak to rozwiązać.
Wiem że truje, ale wole się czegos dowiedzieć niż tworzyć cos bez zrozumienia i na oslep.]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sat, 08 May 2010 20:01:09 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2027#p2027</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2026#p2026</link>
			<description><![CDATA[Ta operacja CASE jest niepoprawna składniowo mi się wydaje. CASE to taki IF który możesz użyć w SELECT.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sat, 08 May 2010 18:36:49 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2026#p2026</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2025#p2025</link>
			<description><![CDATA[masz racje, 
juz widze, musze chyba zrobić urlop od komputera.

ten CASE jest bez sensu w tym miejscu czy dlatego że sam warunek jest bez sensu?

taki miałby sens ?

when zm_nr_kolejny=1 then nr_pracownika=zm_pracownik_id and nr_kolejny=2 ....]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sat, 08 May 2010 12:43:45 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2025#p2025</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2024#p2024</link>
			<description><![CDATA[[quote]
case  when zm_nr_kolejny=1 then nr_pracownika=zm_pracownik_id and nr_kolejny=1
      else nr_pracownika=zm_pracownik_id and nr_kolejny=zm_nr_kolejny
[/quote]
ty na prawdę nie widzisz że to co napisałeś wyżej to to samo co napisac po prostu
[code] 
nr_pracownika=zm_pracownik_id and nr_kolejny=zm_nr_kolejny
[/code]
bo
1) nr_pracownika zawsze jest równy zm_pracownik_id
2) nr_kolejny =1 jeśli zm_nr_kolejny=1 w przeciwnym razie nr_kolejny = zm_nr_kolejny
czyli zawsze nr_kolejny = zm_nr_kolejny


Jasne?
No i napisanie w tym miejscu CASE jest bez sensu.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 07 May 2010 20:29:35 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2024#p2024</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2023#p2023</link>
			<description><![CDATA[Może nie jasno się wyraziłem ale warunek zależy od zmiennej   zm_nr_kolejny, jeżeli jest 1 to zm_nr_kolejny=1, a jeżeli zm_nr_kolejny <>1 to wtedy bierze to co mu podaje np:2

Ale dzięki za pomoc, poniżej mam to co chciałem, jeszcze tylko dopracuje i bedzie ok.
Jeszcze jedno pytanie czy jest możliwość wykonania krokowego funkcji, ( w Accessie F8 ) aby po kolei sprawdzał co funkcja robi, jeżeli tak to w jakim edytorze i w jaki sposób to zrobić?



create or replace function urlopAkceptacja2(zm_pracownik_id integer, zm_nr_kolejny integer) returns text as
$body$
   declare
v_nr_kolejny integer;
v_urlopAkceptacja text;
begin

select case 
                when urlop_anulowanie = 'Anulowanie'  then 'Anulowanie urlopu'
                when urlop_anulowanie = 'Anulowany'  then 'Anulowany'   
                when urlop_akceptacja = 'TAK' then 'Zaakceptowany'
                when urlop_akceptacja = 'NIE' then 'Nie zaakceptowany'
                when urlop_akceptacja is null and urlop_kiedy_wpisano is not null  then 'W trakcie rozpatrywania'
                else 'Brak wniosku na urlop' into v_urlopAkceptacja
           end 
FROM tbl_urlopy where 

case  when zm_nr_kolejny=1 then nr_pracownika=zm_pracownik_id and nr_kolejny=1
      else nr_pracownika=zm_pracownik_id and nr_kolejny=zm_nr_kolejny
end;

return v_urlopAkceptacja;

end;
$body$
language 'plpgsql';]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Fri, 07 May 2010 20:20:44 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2023#p2023</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2022#p2022</link>
			<description><![CDATA[Tylko że ten if 
[quote]
  If zm_nr_kolejny = 1 Then
           strKryterium = "nr_pracownika=" & zm_pracownik_id
           strKryterium = strKryterium & " And nr_kolejny = 1"
     Else
        strKryterium = "nr_pracownika=" & zm_pracownik_id
        strKryterium = strKryterium & " And nr_kolejny = " & zm_nr_kolejny
    End If
[/quote] 
bo i nim chyba mówisz jest trochę bez sensu. Bo zamiast niego możesz po porostu napisać
[code]
strKryterium = "nr_pracownika=" & zm_pracownik_id
strKryterium = strKryterium & " And nr_kolejny = "&zm_nr_kolejny
[/code]
i masz ten sam efekt, czyż nie?
A ja to wszystko od razu przeniosłem do select'a]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 07 May 2010 20:01:16 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2022#p2022</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2021#p2021</link>
			<description><![CDATA[Dzieki, zaraz sprawdze, na takie rozwiazanie bym nie wpadł.

A czy na tego IF-a z strkryterium coś sie poradzi czy musze go określić przed wywołaniem funkcji i podac w argumencie np:

zmienna = nr_pracownika=1and nr_kolejny=1;

..function urlopAkceptacja(funk_zmienna) return ...

.......where funk_zmienna

end function


i wywołuje ją 
select urlopAkceptacja(zmienna)

Bo tak sobie pomyślałem, że może zrobic podobnie jak ten case z 

when urlop_anulowanie = 'Anulowanie'  then 'Anulowanie urlopu'

to może 

case when zm_nr_kolejny = 1 then nr_pracownika:= zm_pracownik_id And nr_kolejny := 1 into jakas_zmienna i wtedy

po where podać:  .. where jakas_zmienna

tylko czy to ma sens i czy moge zrobić into jakas_zmienna jezeli to nie jest w instrukcji select zapytania ??

Nie wiem tylko czy jasno przelałem swoje myśli :-)]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Fri, 07 May 2010 19:28:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2021#p2021</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2020#p2020</link>
			<description><![CDATA[No to pewnie będzie coś takiego

[code]
create or replace function urlopAkceptacja(zm_pracownik_id, zm_nr_kolejny) returns text as
$$
v_nr_kolejny text;
v_urlopAkceptacja text;
begin

select case 
                when urlop_anulowanie = 'Anulowanie'  then 'Anulowanie urlopu'
                when urlop_anulowanie = 'Anulowany'  then 'Anulowany'   
                when urlop_akceptacja = 'TAK' then 'Zaakceptowany'
                when urlop_akceptacja = 'NIE' then 'Nie zaakceptowany'
                when urlop_akceptacja is null and urlop_kiedy_wpisane is not null  then 'W trakcie rozpatrywania'
                else 'Brak wniosku na urlop' into v_urlopAkceptacja
           end 
FROM tbl_urlopy where  nr_pracownika=zm_pracownik_id and nr_kolejny=zm_nr_kolejny;

return v_urlopAkceptacja;

end;
$$
language 'plpgsql';
[/code]
Tylko póki co nie ma pod ręką postgresa żeby w sprawdzić poprawność składni.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Fri, 07 May 2010 17:58:06 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2020#p2020</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Zmiana funkcji na postgresową]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2019#p2019</link>
			<description><![CDATA[Chciałbym określić kryterium zapytania wg parametrów przekazywanych do funkcji. Jezeli nie da się tego określić w funkcji to bedę musiał warunek przygotować przed wywołaniem funkcji i podać jako parametr.
Zapytanie zwraca jeden wiersz]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Fri, 07 May 2010 14:06:18 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2019#p2019</guid>
		</item>
	</channel>
</rss>
