[ brenas @ 02.06.2006. 20:46 ] @
POkusavam da napisem jednu jednostavnu proceduru ali i pored moje tvrdoglavosti nesto mi ne ide od ruke!
Imam bazu, konektovan sam na nju, u okviru baze imam tabelu "R" (tako se zove tabela).
Napisem proceduru:

create procedure procedura1 (izlaz char(10))
as
begin
select * from R
end
;
i tu nastaje problem. Kada god pokusam da kompajliram proceduru javlja mi kompajler gresku u poslednjem redu kod reci END. Probao sam da iza naziva tabele R stavim ";", ali nece ni sa tim da prodje. Gledam "help" u InterBase-u, ko' tele i ne vidim gresku. Sta radim pogresno?
[ dogriz @ 02.06.2006. 21:33 ] @
Code:
SET TERM ^ ;

CREATE PROCEDURE PROCEDURA1
RETURNS(IZLAZ CHAR(10))
AS
begin
  for
    SELECT NEKO_POLJE /*SAMO JEDNO, JER IMAS SAMO JEDAN IZLAZNI PARAMETAR, ZATO NE MOZE "*" */
    FROM R
    into :IZLAZ
  do
  suspend;
end^

SET TERM ; ^


Iz glave, nisam probao. Probaj pa javi da li radi.
[ brenas @ 02.06.2006. 22:10 ] @
Pogresio sam sa objasnjenjem!
Nemam izlaznu promenljivu vec ULAZnu koju treba da uporedim sa necim u bazi.
[ dogriz @ 03.06.2006. 23:39 ] @
OK, a sta treba da ti vraca ta procedura?
[ brenas @ 04.06.2006. 17:50 ] @
U tabeli imam dve kolone : Ime i Datum. Procedura treba da mi vrati ime za zadati datum. Probam sada to sa IBQuery-em , direktno iz koda Delphi-a na primer:
IBQuery1.Sql.Add('select ime from R where datum=" '+Edit3.Text+' " '); ali mi prilkom izvrsavanja Query-a uvek vraca poruku da ne moze da nadje kolonu sa nazivom koji u stvari predstavlja datum iz 'Edit' komponente. Probam i jedno i drugo ali nesto tu fali!
[ chachka @ 05.06.2006. 22:36 ] @
Citat:
brenas:
IBQuery1.Sql.Add('select ime from R where datum=" '+Edit3.Text+' " ');


Problem je u znacima navoda (") i u razmaku iza i i spred tih navodnika. Probaj sa apostrofom ('), ali moras staviti dvostruki apostrof.

Code:

IBQuery1.Sql.Add('select ime from R where datum='''+Edit3.Text+'''');
[ dogriz @ 05.06.2006. 22:40 ] @
Pretpostavljam da treba da ti vraca sva imena za zadati datum, pa bi procedura trebala da izgleda otprilike ovako:
Code:
SET TERM ^ ;

CREATE PROCEDURE PROCEDURA1(DATUM DATE)
RETURNS (IME CHAR(10))
AS
BEGIN
  FOR
    SELECT IME
    FROM R
    WHERE DATUM=:DATUM
    INTO :IME DO
  BEGIN
    SUSPEND;
  END
END^

SET TERM ; ^

[ brenas @ 06.06.2006. 01:05 ] @
Probao sam proceduru - RADI! To je bas ono sto mi je trebalo!
HVALA!!!