Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Primer stored procedure

[es] :: Firebird/Interbase :: Primer stored procedure

[ Pregleda: 3410 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Primer stored procedure16.05.2008. u 21:48 - pre 193 meseci
Korisnik MarkoBalkan je rekao
Citat:
jel imaš kakve primjere za storne za firebird?


Nemam, procedure koje sam pisao su zaštićene ugovorom o autorskom pravu u ime firme gde sam ih i pisao.
Treba pregledati forum gde se diskutuje o Firebird - u, predpostavljam da postoje i adekvatni primeri gde se može pogledati metodologija pisanja procedura (verujem da i googlanjem može se doći do dosta primera).

[Ovu poruku je menjao chachka dana 17.05.2008. u 12:46 GMT+1]
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Re: Primer stored procedure17.05.2008. u 08:20 - pre 193 meseci
Citat:
MarkoBalkan: jel imaš kakve primjere za storne za firebird?

Evo, izdvojio sam par minuta da napravim jednostavan primer za pisanje procedura u Fiebird - u, nadam se da ću utisak o pisanju procedura u Firebird - u, kao užasan, malo poboljšati...

Zahtev:

prikazati ispite za broj index - a koji se unese, ukoliko je ocena 5 neka se ispiše da student nije položio u suprotnom da je položio.

Spisak tabela:

Code:

CREATE TABLE STUDENTI (
 BR_INDEX INTEGER NOT NULL,
 IME VARCHAR(30) CHARACTER SET WIN1250,
 PREZIME VARCHAR(30) CHARACTER SET WIN1250
);

CREATE TABLE ISPITI (
 BR_ISPIT INTEGER NOT NULL,
 NAZIV VARCHAR(30) CHARACTER SET WIN1250
);

CREATE TABLE STATUS (
 BR_INDEX INTEGER NOT NULL,
 BR_ISPIT INTEGER NOT NULL,
 OCENA INTEGER
);

ALTER TABLE STUDENTI ADD CONSTRAINT PK_STUDENTI PRIMARY KEY (BR_INDEX);
ALTER TABLE ISPITI ADD CONSTRAINT PK_ISPITI PRIMARY KEY (BR_ISPIT);
ALTER TABLE STATUS ADD CONSTRAINT PK_STATUS PRIMARY KEY (BR_INDEX, BR_ISPIT);

INSERT INTO STUDENTI (BR_INDEX, IME, PREZIME) VALUES (104052, 'Petar', 'Petrovic');

INSERT INTO ISPITI (BR_ISPIT, NAZIV) VALUES (1, 'Informacione tehnologije');
INSERT INTO ISPITI (BR_ISPIT, NAZIV) VALUES (2, 'Internet programiranje');
INSERT INTO ISPITI (BR_ISPIT, NAZIV) VALUES (3, 'Uvod u ERP sisteme');

INSERT INTO STATUS (BR_INDEX, BR_ISPIT, OCENA) VALUES (1, 104052, 8);
INSERT INTO STATUS (BR_INDEX, BR_ISPIT, OCENA) VALUES (2, 104052, 7);
INSERT INTO STATUS (BR_INDEX, BR_ISPIT, OCENA) VALUES (3, 104052, 5);

Procedura:
Code:

SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE "STUDENT_SPISAK_ISPITI" 
(
  "BR_INDEX" INTEGER
)
RETURNS
(
  "I_BR_INDEX" INTEGER,
  "I_IME" VARCHAR(30) CHARACTER SET WIN1250,
  "I_PREZIME" VARCHAR(30) CHARACTER SET WIN1250,
  "I_PREDMET" VARCHAR(30) CHARACTER SET WIN1250,
  "I_OCENA" INTEGER,
  "I_STATUS" VARCHAR(30) CHARACTER SET WIN1250
)
AS

DECLARE VARIABLE V_OCENA INTEGER;

BEGIN
 FOR SELECT s.br_index,
            s.ime,
            s.prezime,
            i.naziv,
            st.ocena
     FROM STATUS st
      INNER JOIN STUDENTI s ON s.br_index = st.br_index
      INNER JOIN ISPITI i ON i.br_ispit = st.br_ispit
     WHERE s.br_index = :BR_INDEX
     INTO I_BR_INDEX,
          I_IME,
          I_PREZIME,
          I_PREDMET,
          :V_OCENA
 DO BEGIN

   IF (V_OCENA = 5) THEN BEGIN
     I_OCENA = V_OCENA;
     I_STATUS = 'NIJE POLOZIO';
   END ELSE BEGIN
     I_OCENA = V_OCENA;
     I_STATUS = 'POLOZIO';
   END
    
  SUSPEND;
 END

END^

SET TERM ; ^

U proceduru sam ubacio i rad sa varijablama. Rzultat koji treba da dobijemo:



Nadam se da sam malo pomogao.
Someone's sitting in the shade today because someone planted a tree a long time ago.
Prikačeni fajlovi
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
78.134.131.*



+19 Profil

icon Re: Primer stored procedure17.05.2008. u 08:54 - pre 193 meseci
i ne može mi se izvršiti procedura!

evo slike
Prikačeni fajlovi
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Primer stored procedure17.05.2008. u 09:10 - pre 193 meseci
Miloš ti je dao executable skript primer, samo trebaš da ga izvršiš u kompletu preko isqla ili iz nekog grafičkog alata iz njegove script executive opcije. Ako želiš da izvršavaš deo po deo (koliko vidim tako si počeo) onda su SET TERM delovi višak. FB i njegov PSQL (jezik triggera i procedura) ako se iskoristi do kraja može dati izuzetne rezultate po pitanju brzine i jednostavnosti. O FBu možeš više pročitati na www.ibphoenix.com, takođe tu možeš naći pdf knjige o apiju i PSQL sintaksi.
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
78.134.131.*



+19 Profil

icon Re: Primer stored procedure17.05.2008. u 10:13 - pre 193 meseci
kažem da ne radi.probao sam izvršiti kao skriptu i ne radi.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.adsl-1.sezampro.yu.



Profil

icon Re: Primer stored procedure17.05.2008. u 10:54 - pre 193 meseci
Prvi SQL je formiranje tabela i unos. Drugi je kreiranje procedure sa ulaznim parametrom BR_INDEX. Kad sprovedeš SQL za proceduru, rezultat je njeno formiranje. Potom pri izvršavanju unosiš ulazni parametar i dobijaš rezultat obrade.

BTW, koristio sam IBOConsole.

[Ovu poruku je menjao Miloš Baić dana 17.05.2008. u 12:36 GMT+1]
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

[es] :: Firebird/Interbase :: Primer stored procedure

[ Pregleda: 3410 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.