db2 i tworzenie funkcji
szvej - 11-05-2007 12:33
db2 i tworzenie funkcji
witajcie!
jestem zupelnie zielony w db2 i zacialem sie juz na samym poczatku. otoz chcialem stworzyc prosta procedure, ale zawsze otrzymuje blad. oto jak wyglada owa funkcja:
create function ttt(nazwa varchar(30)) returns table (idProduktu int) LANGUAGE SQL MODIFIES SQL DATA NO EXTERNAL ACTION DETERMINISTIC begin atomic return (select id from schemat.produkty where nazwa = kk); end;
zwracany blad:
SQL0104N Znaleziono nieoczekiwany element "END-OF-STATEMENT" występujący po tekście "end". Dopuszczalne elementy to: "JOIN <joined_table> ". kod_sql : -104 stan_sql : 42601
co jest nie tak i co zle robie? pisze to w edytorze komend w centrum sterowania. nie wiem czy dobrze. prosze o pomoc.
-- pozdrawiam i z gory dziekuje, szwejk
szvej - 11-05-2007 12:33
create function ttt(nNazwa varchar(30)) returns table (idProduktu int) LANGUAGE SQL MODIFIES SQL DATA NO EXTERNAL ACTION DETERMINISTIC begin atomic return (select id from schemat.produkty where nazwa = nNazwa); end;
tak mialo byc. przepraszam za niescislosc..
On 8 Maj, 17:30, szvej <szwe...@gmail.com> wrote: > witajcie! > > jestem zupelnie zielony w db2 i zacialem sie juz na samym poczatku. > otoz chcialem stworzyc prosta procedure, ale zawsze otrzymuje blad. > oto jak wyglada owa funkcja: > > create function ttt(nazwa varchar(30)) > returns table (idProduktu int) > LANGUAGE SQL > MODIFIES SQL DATA > NO EXTERNAL ACTION > DETERMINISTIC > begin atomic > return (select id from schemat.produkty where nazwa = kk); > end; > > zwracany blad: > > SQL0104N Znaleziono nieoczekiwany element "END-OF-STATEMENT" > występujący po tekście "end". Dopuszczalne elementy to: "JOIN > <joined_table> ". > kod_sql : -104 > stan_sql : 42601 > > co jest nie tak i co zle robie? pisze to w edytorze komend w centrum > sterowania. nie wiem czy dobrze. prosze o pomoc. > > -- > pozdrawiam i z gory dziekuje, > szwejk
Artur - 11-05-2007 12:33
> co jest nie tak i co zle robie?
Funkcja jest dobrze napisana. Musisz wybrać znak końca instrukcji, inny niż średnik.
Problem polega na tym, że funkcje lub np. procedury składowane są przykładem tzw. złożonego SQL (ang. compound SQL). Wiele instrukcji SQL tworzy jedną, atomową instrukcję. Pojedyncze instrukcje są oddzielane średnikiem (element języka SQL). Narzędzie wykonujące taki złożony SQL (np. edytor komend) musi być wiedzieć, kiedy kończy się taka złożona instrukcja. Wybierz np. znak @ i wpisz go w stopce Edytora Komend (jest pole mówiące o znaku końca instrukcji).
Podobnie jest, jeśli chcesz tworzyć procedury z plików w trybie tekstowym: po każdej instrukcji atomowej umieszczasz znak (bądź dwa znaki) końca polecenia DB2 (np. @) a następnie wykonujesz plik z opcjami:
db2 -td@ -f plik_z_poleceniami_db2
(t = terminated; d - defined; f - file; zamias @ możesz wstawić inny znak).
Jeśli wykorzystasz Develper Workbench, wtedy nie będziesz musiał się martwić o znak końca ponieważ narzędzie dedykowane jest do tworzenia procedur i funkcji (rozumie, że będziemy podawać tylko Compound SQL, tzn. tylko treść procedur).
http://www.ibm.com/software/data/db2.../download.html
-- Artur Wronski
Artur - 11-05-2007 12:33
By było zrozumiale, tak możesz to napisać:
create function ttt(nNazwa varchar(30)) returns table (idProduktu int) LANGUAGE SQL MODIFIES SQL DATA NO EXTERNAL ACTION DETERMINISTIC begin atomic return (select id from schemat.produkty where nazwa = nNazwa); end @
szvej - 11-05-2007 12:33
Dziekuje bardzo za pomoc. Juz wszystko dziala.
On 9 Maj, 00:46, Artur <artur.wron...@gmail.com> wrote: > By było zrozumiale, tak możesz to napisać: > > create function ttt(nNazwa varchar(30)) > returns table (idProduktu int) > LANGUAGE SQL > MODIFIES SQL DATA > NO EXTERNAL ACTION > DETERMINISTIC > begin atomic > return (select id from schemat.produkty where nazwa = nNazwa); > end @
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Photoshop CS2 - funkcje, =?ISO-8859-2?Q?kt=F3rych_si=EA_nie_?==?ISO-8859-2?Q?spodziewasz=2E=2E=2E?=
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
postgres - ile razy wykona =?ISO-8859-2?Q?si=EA_funkcja_w_?==?ISO-8859-2?Q?zapytaniu?=
[MySQL] Load data infile i =?ISO-8859-2?Q?u=BFycie_funkcji_r?==?ISO-8859-2?Q?eplace?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
Problem z funkcja mysql_real_escape_string() na bazie mysql
Tworzenie tabeli z =?ISO-8859-2?Q?nazw=B1_ustalan=B1_przez_?==?ISO-8859-2?Q?usera?=
=?iso-8859-2?q?Sybase_jak_wyci=B1gn=B1=E6_dane_generowane_prz ez_funkcje?=
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|