Ładny brzuch
witam
mam taka procedurke napisana w postgresie:
CREATE FUNCTION DOBOR_JED_ADRES_JEDNOSTKI ( IPM_ID_JED INTEGER ) RETURNS SETOF dobor_jed_struct AS $$ DECLARE lvRecord RECORD; BEGIN FOR lvRecord IN SELECT 'J' As ALGORYTM, -1 As ID_UZYT, JED.id_jed As ID_JED, JED.rodz_jed As RODZ_JED, JED.opis_jed As OPIS_JED, JED.ulica As ULICA_JED, JED.nr_dom As nr_domu, JED.nr_lok As nr_lokalu, JED.telefon_1 As TELEFON_1, JED.telefon_2 As TELEFON_2, JED.fax As FAX, JED.email As EMAIL, JED.czy_internet As CZY_INTERNET, JED.NAZWA As NAZWA, JED.KOD_POCZTY As KOD_POCZTY, WOJ.kod As WOJ_KOD, WOJ.nazwa As WOJ_NAZWA, POW.kod As POW_KOD, POW.nazwa As POW_NAZWA, GMI.kod As GMI_KOD, GMI.nazwa As GMI_NAZWA, MIE.kod As MIE_KOD, MIE.nazwa As MIE_NAZWA FROM SL_JEDNOSTKI JED INNER JOIN SL_MIEJSCOWOSC_VIEW MIE ON MIE.kod = JED.kod_miej INNER JOIN SL_GMINA_VIEW GMI ON GMI.kod = MIE.kod_gminy INNER JOIN SL_POWIAT_VIEW POW ON POW.kod = SUBSTR(GMI.kod, 1, 4) INNER JOIN SL_WOJEWODZTWO_VIEW WOJ ON WOJ.kod = SUBSTR(POW.kod, 1, 2) WHERE JED.ID_JED = IPM_ID_JED LOOP RETURN NEXT lvRecord; END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql';
i taki typ uzyte w tej procedurze:
CREATE TYPE dobor_jed_struct AS ( "algorytm" CHAR(1), "id_uzyt" INTEGER, "id_jed" INTEGER, "rodz_jed" VARCHAR(150), "opis_jed" VARCHAR(1000), "ulica_jed" VARCHAR(150), "nr_domu" VARCHAR(150), "nr_lokalu" VARCHAR(150), "telefon_1" VARCHAR(150), "telefon_2" VARCHAR(150), "fax" VARCHAR(150), "email" VARCHAR(150), "czy_internet" CHAR(1), "nazwa" VARCHAR(150), "kod_poczty" VARCHAR(150), "woj_kod" VARCHAR(150), "woj_nazwa" VARCHAR(150), "pow_kod" VARCHAR(150), "pow_nazwa" VARCHAR(150), "gmi_kod" VARCHAR(150), "gmi_nazwa" VARCHAR(150), "mie_kod" VARCHAR(150), "mie_nazwa" VARCHAR(150) );
teraz problem jest taki ze jak robie sobie selecta na wywoluniu tej procedurki to dostaje komunikat ze typ zwracany nie roowna sie deklarowanemu; znalazlem ze powodem bledu jest --> 'J' As ALGORYTM, <--; jak wywale to z typu i z selecta w procedurze wszystko jest ok...
ktos ma pomysl jaki typ powinienem zadeklarowac (albo moze urzyc jakiegos castowania)?
ps. jak uzyje funkcji ascii('J') i w typie zadeklaruje algorytm jako integer to wszystko gra, no ale kurde przeciez musi byc lepszy sposoob :/
ok
zrobilem to uzywajac funkcji substr i deklarujac algorytm jako text;
teraz juz z ciekawosci -> zna ktos inny sposoob bo to co zrobilem to mi sie zdaje droga troche na okolo:)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
mam taka procedurke napisana w postgresie:
CREATE FUNCTION DOBOR_JED_ADRES_JEDNOSTKI ( IPM_ID_JED INTEGER ) RETURNS SETOF dobor_jed_struct AS $$ DECLARE lvRecord RECORD; BEGIN FOR lvRecord IN SELECT 'J' As ALGORYTM, -1 As ID_UZYT, JED.id_jed As ID_JED, JED.rodz_jed As RODZ_JED, JED.opis_jed As OPIS_JED, JED.ulica As ULICA_JED, JED.nr_dom As nr_domu, JED.nr_lok As nr_lokalu, JED.telefon_1 As TELEFON_1, JED.telefon_2 As TELEFON_2, JED.fax As FAX, JED.email As EMAIL, JED.czy_internet As CZY_INTERNET, JED.NAZWA As NAZWA, JED.KOD_POCZTY As KOD_POCZTY, WOJ.kod As WOJ_KOD, WOJ.nazwa As WOJ_NAZWA, POW.kod As POW_KOD, POW.nazwa As POW_NAZWA, GMI.kod As GMI_KOD, GMI.nazwa As GMI_NAZWA, MIE.kod As MIE_KOD, MIE.nazwa As MIE_NAZWA FROM SL_JEDNOSTKI JED INNER JOIN SL_MIEJSCOWOSC_VIEW MIE ON MIE.kod = JED.kod_miej INNER JOIN SL_GMINA_VIEW GMI ON GMI.kod = MIE.kod_gminy INNER JOIN SL_POWIAT_VIEW POW ON POW.kod = SUBSTR(GMI.kod, 1, 4) INNER JOIN SL_WOJEWODZTWO_VIEW WOJ ON WOJ.kod = SUBSTR(POW.kod, 1, 2) WHERE JED.ID_JED = IPM_ID_JED LOOP RETURN NEXT lvRecord; END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql';
i taki typ uzyte w tej procedurze:
CREATE TYPE dobor_jed_struct AS ( "algorytm" CHAR(1), "id_uzyt" INTEGER, "id_jed" INTEGER, "rodz_jed" VARCHAR(150), "opis_jed" VARCHAR(1000), "ulica_jed" VARCHAR(150), "nr_domu" VARCHAR(150), "nr_lokalu" VARCHAR(150), "telefon_1" VARCHAR(150), "telefon_2" VARCHAR(150), "fax" VARCHAR(150), "email" VARCHAR(150), "czy_internet" CHAR(1), "nazwa" VARCHAR(150), "kod_poczty" VARCHAR(150), "woj_kod" VARCHAR(150), "woj_nazwa" VARCHAR(150), "pow_kod" VARCHAR(150), "pow_nazwa" VARCHAR(150), "gmi_kod" VARCHAR(150), "gmi_nazwa" VARCHAR(150), "mie_kod" VARCHAR(150), "mie_nazwa" VARCHAR(150) );
teraz problem jest taki ze jak robie sobie selecta na wywoluniu tej procedurki to dostaje komunikat ze typ zwracany nie roowna sie deklarowanemu; znalazlem ze powodem bledu jest --> 'J' As ALGORYTM, <--; jak wywale to z typu i z selecta w procedurze wszystko jest ok...
ktos ma pomysl jaki typ powinienem zadeklarowac (albo moze urzyc jakiegos castowania)?
ps. jak uzyje funkcji ascii('J') i w typie zadeklaruje algorytm jako integer to wszystko gra, no ale kurde przeciez musi byc lepszy sposoob :/
ok
zrobilem to uzywajac funkcji substr i deklarujac algorytm jako text;
teraz juz z ciekawosci -> zna ktos inny sposoob bo to co zrobilem to mi sie zdaje droga troche na okolo:)