<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - kilka pytań nt. funkcji sql ??]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=299</link>
		<description><![CDATA[Najświeższe odpowiedzi w kilka pytań nt. funkcji sql ??.]]></description>
		<lastBuildDate>Wed, 07 Oct 2009 10:52:34 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1368#p1368</link>
			<description><![CDATA[Ad 1.
Zdefiniuj sobie odpowiedni typ rekordowy (CREATE TYPE)
Ad 2.
Ale pobierać gdzie w innej funkcji?
Jeśli tak to możesz sie przeiterować pętlą for po wynikach funkcji  (FOR typ IN SELECT funkcja () LOOP ... END LOOP;)
O to chodzi?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Wed, 07 Oct 2009 10:52:34 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1368#p1368</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1367#p1367</link>
			<description><![CDATA[[quote=rski]co?
Typ zwracanej funkcji sam musisz ustalić, albo bedzie to pojedyncza wartosc, albo 'setof...'.[/quote]
ale typ zwracany  będzie kompilacją różnych wartości z wielu tabel, (a zdaje się że te 'setof...' odnosi się do jednej tabeli już istniejącej?? Jak wtedy to rozegrać??

[quote=rski]Co znaczy 'jak krotki potem pobierać'?[/quote]
chodziło o coś w rodzaju pg_fetch_rows bądź pg_fetch_assoc :

Czyli w przypadku funcji to się robi tak (dla PHP) że najpierw:
$zapytanie = pg_query('SELECT nazwa_funkcji(arg1,arg2,arg3) ');
a poźniej:
$krotka=pg_fetch_assoc($zapytanie);

??]]></description>
			<author><![CDATA[dummy@example.com (dfs)]]></author>
			<pubDate>Wed, 07 Oct 2009 10:30:55 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1367#p1367</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1362#p1362</link>
			<description><![CDATA[co?
Typ zwracanej funkcji sam musisz ustalić, albo bedzie to pojedyncza wartosc, albo 'setof...'.
Co znaczy 'jak krotki potem pobierać'?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 06 Oct 2009 06:41:30 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1362#p1362</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1361#p1361</link>
			<description><![CDATA[A jeśli mogę zapytać jak za pomocą funcki pobierać dane w zapytaniu SELECT??



Nie chodzi mi o samą treść zapytania (SELECT ... FROM...), a o to jaki  ma być zwracany typ funkcji, i jak krotki później pobierać??]]></description>
			<author><![CDATA[dummy@example.com (dfs)]]></author>
			<pubDate>Mon, 05 Oct 2009 22:05:08 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1361#p1361</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1337#p1337</link>
			<description><![CDATA[Naprościej tak
[code]
create or replace function dodaj_ankiete(integer,varchar,text) returns integer
as
$$
insert into ankieta values(default,$1,$2,$3,clock_timestamp()) returning id;
$$
language 'sql';
[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 28 Sep 2009 17:38:32 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1337#p1337</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1334#p1334</link>
			<description><![CDATA["PostgreSQL 8.3.7 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Ubuntu 4.3.3-5ubuntu4) 4.3.3"]]></description>
			<author><![CDATA[dummy@example.com (dfs)]]></author>
			<pubDate>Mon, 28 Sep 2009 09:30:40 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1334#p1334</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1332#p1332</link>
			<description><![CDATA[Jaką masz wersję postgresa?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 28 Sep 2009 09:10:10 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1332#p1332</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1331#p1331</link>
			<description><![CDATA[mam przykładowo tabelkę:
[quote]
CREATE TABLE ankieta
(
  id serial NOT NULL,
  id_uzytkownik integer NOT NULL,
  nazwa character varying(255) NOT NULL,
  opis text,
  data_utworzenia timestamp without time zone NOT NULL
);
[/quote]

I chcę napisać funkcję SQL której wywołanie będzie wyglądać tak[b] dodaj_ankiete(id_uzytkownik,nazwa,opis)[/b].

Funkcja ta ma za zadanie dodać do tabeli ankieta argumenty z funkcji (co do reszty to wiadomo serial - DEFAULT i  data_utworzenia - clock_timestamp() )

P.S. Fajnie by było gdyby funkcja zwracała id właśnie dodanego elementu;)]]></description>
			<author><![CDATA[dummy@example.com (dfs)]]></author>
			<pubDate>Mon, 28 Sep 2009 09:04:15 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1331#p1331</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1330#p1330</link>
			<description><![CDATA[1.1
:)
Chyba niewyspany byłem takie głupoty napisałem :). Oczywiście mozna uzyć INSERT INTO (sie mi pomyliło z SELECT INTO)

Będzie prościej jak pokażesz kod funkcji.

2. No to musisz utworzyc te funkcje z klauzula 'SECURITY DEFINER' i potem zabrać poleceniem REVOKE, prawa do zapytań SQL na konkretnych tabelach.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 28 Sep 2009 07:41:40 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1330#p1330</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1329#p1329</link>
			<description><![CDATA[1.1 Chodzi o mi o zwykłą funkcję SQL (nie PL/pgSQL)
 [quote]LANGUAGE 'sql'[/quote]

Jak mam napisać funkcję która dodaje coś do bazy?? Jeśli chodzi o INTy to nie ma problemu, zaś z zmiennymi które trzeba wsiąść w 'cudzysłów' już jest problem, albo "nie ma takiej kolumny" albo wkleja dosłownie 'arg1' ;/

2 Zadeklarować kilka swoich funkcji w bazie *nie chodzi mi o całą klasę INSERT, SELECT - tylko już o konktretne np. wypelni_tabele_X(argunemt,argument), pokaz_tabele_x(arument)

Tak aby można odwoływać się tylko do nich, aby nie można tworzyć innych zapytań niż te zadeklarowane w bazie funkcję.


3) no miej więcej o to mi chodziło z tym że potrzebne mi to było bardziej do wstawiania z punktu 1, ale i tak mi nie wyszło.]]></description>
			<author><![CDATA[dummy@example.com (dfs)]]></author>
			<pubDate>Mon, 28 Sep 2009 07:15:50 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1329#p1329</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1326#p1326</link>
			<description><![CDATA[1.1. Można, ale 'INSERT INTO' to nie sql.
1.2 Nie rozumiem co masz na mysli
2. ?! znaczy zabronić iNSERTÓT, DELETÓW itp. ?
3. o to chodzi?
[code]
insert into tabela select ...
[/code]
może podaj jakiś przykład]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sat, 26 Sep 2009 15:38:44 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1326#p1326</guid>
		</item>
		<item>
			<title><![CDATA[kilka pytań nt. funkcji sql ??]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1325#p1325</link>
			<description><![CDATA[Witam!

I. funkcje w języku SQL:
1) Chciałem zapytać czy za pomocą zwykłej funkcji w języku 'sql' możeliwe jest wykonanie działania na danych z tabel inne niż SELECT?? 
    1.1) Czy za pomocą funkcji można dodawać dane INSERT INTO??
    1.2) Czy też wykonywać całą procedurę??

//Pytam funkcję w język SQL,choć wiem że zapewne w PL/pgSQL jest to możliwe.

2) Czy można wyłączyć obsługę innych zapytań niż tylko zadeklarowane funkcję??

II.  Proceduralne dodawania danych:
3) Czy można nie deklarując funkcji ani procedury  w jednym zapytaniu dokonać INSERT'a częściowo w oparciu o SELECT?? Chodzi np. o sytuację że chcąc dodać nowy rekord do tabeli muszę znać nr rekordu poprzedniego (serial nie wchodzi tu w grę, gdyż chodzi o kilka tabel).]]></description>
			<author><![CDATA[dummy@example.com (dfs)]]></author>
			<pubDate>Sat, 26 Sep 2009 10:29:38 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1325#p1325</guid>
		</item>
	</channel>
</rss>
