<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - kilka pytań nt. funkcji sql ??]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=299&amp;type=atom"/>
	<updated>2009-10-07T10:52:34Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=299</id>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1368#p1368"/>
			<content type="html"><![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?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-10-07T10:52:34Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1368#p1368</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1367#p1367"/>
			<content type="html"><![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);

??]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2009-10-07T10:30:55Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1367#p1367</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1362#p1362"/>
			<content type="html"><![CDATA[co?
Typ zwracanej funkcji sam musisz ustalić, albo bedzie to pojedyncza wartosc, albo 'setof...'.
Co znaczy 'jak krotki potem pobierać'?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-10-06T06:41:30Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1362#p1362</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1361#p1361"/>
			<content type="html"><![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ć??]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2009-10-05T22:05:08Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1361#p1361</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1337#p1337"/>
			<content type="html"><![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]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-09-28T17:38:32Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1337#p1337</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1334#p1334"/>
			<content type="html"><![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"]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2009-09-28T09:30:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1334#p1334</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1332#p1332"/>
			<content type="html"><![CDATA[Jaką masz wersję postgresa?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-09-28T09:10:10Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1332#p1332</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1331#p1331"/>
			<content type="html"><![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;)]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2009-09-28T09:04:15Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1331#p1331</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1330#p1330"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-09-28T07:41:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1330#p1330</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1329#p1329"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2009-09-28T07:15:50Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1329#p1329</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1326#p1326"/>
			<content type="html"><![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]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-09-26T15:38:44Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1326#p1326</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[kilka pytań nt. funkcji sql ??]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1325#p1325"/>
			<content type="html"><![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).]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2009-09-26T10:29:38Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1325#p1325</id>
		</entry>
</feed>
