<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - CREATE TABLE przez funkcje]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=146</link>
		<description><![CDATA[Najświeższe odpowiedzi w CREATE TABLE przez funkcje.]]></description>
		<lastBuildDate>Mon, 02 Mar 2009 21:43:43 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=578#p578</link>
			<description><![CDATA[Zmieniłem na integer dział jak trzeba. WIELKI SZACUNEK DLA WIEDZY Z POSTGRESA 
[code]CREATE OR REPLACE FUNCTION f_sint_CreateTable_tbl(integer)
RETURNS void AS $$
DECLARE
    str varchar;
begin
        select ($1::integer)::varchar into str;
        execute ' CREATE TABLE "'||str||'"(
          dtDataGodzina timestamp(0) without time zone NOT NULL,
          idfkPojazd smallint NOT NULL,
          idfkAwarieSkroty smallint NOT NULL,
          sintNrBitu smallint NOT NULL,
          intWartosc integer
        ) WITH OIDS';
end;
$$ LANGUAGE plpgsql;[/code]]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Mon, 02 Mar 2009 21:43:43 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=578#p578</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=577#p577</link>
			<description><![CDATA[Jak sa bledy, znaczy trza poprawić :). Może tak
[code]CREATE OR REPLACE FUNCTION f_sint_CreateTable_tbl(smallint)
RETURNS void AS $$
DECLARE
    str varchar;
begin
        select ($1::smallint)::varchar into str;
        execute ' CREATE TABLE "'||str||'"(
          dtDataGodzina timestamp(0) without time zone NOT NULL,
          idfkPojazd smallint NOT NULL,
          idfkAwarieSkroty smallint NOT NULL,
          sintNrBitu smallint NOT NULL,
          intWartosc integer
        ) WITH OIDS';
end;
$$ LANGUAGE plpgsql;[/code]
Jedna uwaga jesli chcesz używać smallint to przy wywołaniu funkcji musisz rzutować argument np
[code]select f_sint_CreateTable_tbl(112::smallint);[/code]
Jak tego nie zrobisz to przy wywolaniu
[code]select f_sint_CreateTable_tbl(112);[/code]
postgres bedzie szukal funkcji z argumentem integer i zgłosi bląd bo definicji takiej nie ma (może warto zmienić typ ze smallint na integer)?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 02 Mar 2009 20:29:47 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=577#p577</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=576#p576</link>
			<description><![CDATA[wykombinowałem coś takiego ale coś tu jest nie tak:
[code]CREATE OR REPLACE FUNCTION f_sint_CreateTable_tbl(smallint)
RETURNS void AS $$
DECLARE 
    str varchar;
begin
str:=($1::smallint)::varchar;
execute ' CREATE TABLE '||str||'(
          dtDataGodzina timestamp(0) without time zone NOT NULL,
          idfkPojazd smallint NOT NULL,
          idfkAwarieSkroty smallint NOT NULL,
          sintNrBitu smallint NOT NULL,
          intWartosc integer
) WITH OIDS';
end;
$$ LANGUAGE plpgsql;[/code]
testuję tak:

[code]SELECT f_sint_CreateTable_tbl(1234);[/code]
i wywołaniu wywala błędy]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Mon, 02 Mar 2009 20:19:27 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=576#p576</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=575#p575</link>
			<description><![CDATA[Operator rzutowania w postgresie to :: np
[code]select (1::smallint)::varchar;[/code]
Ale postgres jest dosc wrazliwy jesli chodzi o nazewnictwo tabel i pewnie bedziesz musial dodac " " w tym execute, polecenie tworzenia takiej tabeli z poziomu psql powinno byc 
[code]create table "123" (...)[/code]
Cos takiegop
[code]create table 123 (..[/code]
raczej nie przejdzie]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 02 Mar 2009 19:39:55 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=575#p575</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=574#p574</link>
			<description><![CDATA[No właśnie nazwą tabeli jest liczba którą zwraca mi funkcja. Tabela będzie wpisywana przez wyzwalacz jednak jeżeli takiej tabeli jeszcze nie będzie to muszę ją utworzyć. Nazwą tej tabeli będzie liczba typu smallint zwracana przez inną funkcję.]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Mon, 02 Mar 2009 19:12:08 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=574#p574</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=573#p573</link>
			<description><![CDATA[a co niby ten smallint ma przechowywac, nazwe tabeli? Nazwa tabeli ma byc liczba?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 02 Mar 2009 18:30:01 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=573#p573</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=572#p572</link>
			<description><![CDATA[Wielkie dzięki jest tylko jeden drobiazg jako parametr czyli nazwę  tabeli do utworzenia mam liczbę typu smallint którą zwraca mi inna funkcja żeby zadziałało muszę zrobić konwersję ze smallint na varchar albo w funkcji która zwraca albo w tej tylko nie wiem jak to zrobić. Szukałem informacji na temat PL/pgSQL niestety nie wiele znalazłem przykładów i informacji do MySQL jest dużo więcej.]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Mon, 02 Mar 2009 18:28:50 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=572#p572</guid>
		</item>
		<item>
			<title><![CDATA[Odp: CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=571#p571</link>
			<description><![CDATA[Może użyj dynamicznego sqla np tak
[code]CREATE OR REPLACE FUNCTION f_sint_CreateTable_tbl(varchar)
RETURNS void AS $$
begin
execute ' CREATE TABLE '||$1||'(
          dtDataGodzina timestamp(0) without time zone NOT NULL,
          idfkPojazd smallint NOT NULL,
          idfkAwarieSkroty smallint NOT NULL,
          sintNrBitu smallint NOT NULL,
          intWartosc integer
) WITH OIDS';
end;
$$ LANGUAGE plpgsql;[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 02 Mar 2009 17:05:19 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=571#p571</guid>
		</item>
		<item>
			<title><![CDATA[CREATE TABLE przez funkcje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=570#p570</link>
			<description><![CDATA[Witam!

Potrzebuję napisać funkcję która utworzy tabelę o zdefiniowanej strukturze i nazwie podanej jako parametr smallint. Mam funkcję napisaną w języku SQL chciałbym zamiast NazwaZmiennej użyć parametru funkcji:

[code]CREATE OR REPLACE FUNCTION f_sint_CreateTable_tbl(smallint) 
RETURNS void AS $$

CREATE TABLE NazwaZmiennej
(
  "dtDataGodzina" timestamp(0) without time zone NOT NULL,
  "idfkPojazd" smallint NOT NULL,
  "idfkAwarieSkroty" smallint NOT NULL,
  "sintNrBitu" smallint NOT NULL,
  "intWartosc" integer
)
WITH (OIDS=TRUE);

$$ LANGUAGE SQL;[/code]]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Mon, 02 Mar 2009 13:43:34 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=570#p570</guid>
		</item>
	</channel>
</rss>
