[ mojeKorIme @ 11.12.2008. 09:34 ] @
Kako napraviti stored proceduru koja ima više inserta u sebi

ima nekoliko blokova insert table1 select table2
pa onda insert table 3 select table1

bitno mi je da se završi prvi blok pa da se tek onda pređe na drugi. Kako još slati podatke o tome. Npr radim aplikaciju u delphiju pa mi je bitno da mysql pošalje neku poruku koji je blok završen. Tako bih mogao i napraviti progress bar.

Hvala unaprijed na pomoći!
[ bogdan.kecman @ 11.12.2008. 10:19 ] @
Citat:
mojeKorIme: Kako napraviti stored proceduru koja ima više inserta u sebi

ima nekoliko blokova insert table1 select table2
pa onda insert table 3 select table1



identicno kao i stored proceduru sa jednim insertom?!

begin
insert into ...
insert into ...
insert into ...
end


Citat:

bitno mi je da se završi prvi blok pa da se tek onda pređe na drugi.


stored procedura se izvrsava kao "procedura" dakle jedna po jedna naredba, ne moze drugacije osim jedan po jedan blok, ne mozes nikako proceduri da kazes da izvrsava 5 blokova paralelno

Citat:

Kako još slati podatke o tome. Npr radim aplikaciju u delphiju pa mi je bitno da mysql pošalje neku poruku koji je blok završen. Tako bih mogao i napraviti progress bar.


stored procedura na zalost ne moze da vrati rezultat u obliku tabele. ono sto mozes je da u proceduri uradis nesto tipa "select 'gotov prvi step';" ali to nece doci u "result set-u" tako da ne znam kako ces iz delfija da pokupis taj info .. posto mysql.executequery('call mojaprocedura();'); nece vratiti nista u result set-u

pogledaj: http://www.brainbell.com/tutor...QL/Using_Stored_Procedures.htm
prilicno je ok objasnjen rad sa stored procedurama za pocetnike
[ bogdan.kecman @ 11.12.2008. 10:26 ] @
ako ti u stored proceduri trebaju transakcije .. pogledaj: http://www.4guysfromrolla.com/webtech/080305-1.shtml

Code:

CREATE PROCEDURE xyz()
AS
BEGIN TRANSACTION

DELETE FROM ...

-- Rollback the transaction if there were any errors
IF @@ERROR <> 0
 BEGIN
    -- Rollback the transaction
    ROLLBACK
    -- Raise an error and return
    RAISERROR ('kuku lele', 16, 1)
    RETURN
 END


DELETE FROM ...

-- Rollback the transaction if there were any errors
IF @@ERROR <> 0
 BEGIN
    -- Rollback the transaction
    ROLLBACK

    -- Raise an error and return
    RAISERROR ('kukulele', 16, 1)
    RETURN
 END

COMMIT


[ mojeKorIme @ 11.12.2008. 10:34 ] @
:) bogdan.kecman hvala ti najljepsa na ovom odgovoru
[ bogdan.kecman @ 11.12.2008. 11:44 ] @
nema na cemu, samo pitaj kad zaglavis ...