[ ultraKeen @ 13.12.2004. 04:43 ] @
Imam malo zescu stor.proc. koja SUSPEND mehanizmom treba da fetch-uje mnogo, nazovimo ih, redova tabele... ustvari ista pravi pun sistem kombinacija sa ponavljanjem, pa kao glavni ulazni parametar, izmedju ostalog, ima i broj koji odredjuje kolicinu kombinacija od 1 do 30. Recimo za 10 mi vrati 2058 redova (sa sve sumarnim redovima)...

Problem: sve radi OK dok je broj redova <= 14, ali pocev od =15 pati se pati i na kraju kaze:

fmDebugSP.Query:
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
arithmetic exception, numeric overflow, or string truncation.

E sad', meni to lici na udaranje u limit nekog baffer-a; posto mi je konekcija sa bazom preko IP adrese, probao sam da TcpRemoteBufferSize povecam sa default =8192 na =16384, ali se nista ne desava: i dalje puca na zahtev za 15 kombinacija...

Ima li jos koji gde baffer, ili je stos u necem drugom ?


P.S. Ako se potrazi u dokumentaci (za naravno InterBase 6.0) detaljnije o greski broj -303, nje naravno ni nema u spisku iz Language Reference pdf-a..
[ ultraKeen @ 14.12.2004. 07:02 ] @
sve sam vise ubedjen da je u pitanju stack poziva procedura (mora necega takvog da ima svugde gde se nesto poziva), da se on prepuni...

nije sala preneti svaki put 100-tinak paramera - pa tako vise od 32.000 puta...
[ Riste Pejov @ 14.12.2004. 13:55 ] @
Nije problem u baferima, niti treba biti, valjda imas neku rekurziju i sta li jos ne, velicina record seta ne treba biti nikakav problem. Imas problem sa dizajniranjem SP-a ne sa baferima :)
[ ultraKeen @ 15.12.2004. 14:34 ] @
dispozicija u kodu je:

CREATE PROCEDURE proc_A ( in_full SMALLINT,
--------------------------in_01 INTEGER,
--------------------------...
--------------------------in_30 INTEGER )
DO
--DECLARA VARIABLE k INTEGER;
--DECLARA VARIABLE start_row INTEGER;
--DECLARA VARIABLE pom_count INTEGER;
--DECLARA VARIABLE pom_01 INTEGER;
--...
--DECLARA VARIABLE pom_35 INTEGER;
BEGIN
--
--...
--
--start_row = 1;
--k = 1;
--WHILE ( k <= in_full ) DO
----BEGIN
------EXECUTE PROCEDURE proc_B ( :k,
---------------------------------:in_full,
---------------------------------:start_row,
---------------------------------:in_01, :in_02, :in_03, :in_04, :in_05,
---------------------------------:in_06, :in_07, :in_08, :in_09, :in_10,
---------------------------------:in_11, :in_12, :in_13, :in_14, :in_15,
---------------------------------:in_16, :in_17, :in_18, :in_19, :in_20,
---------------------------------:in_21, :in_22, :in_23, :in_24, :in_25,
---------------------------------:in_26, :in_27, :in_28, :in_29, :in_30,
---------------------------------NULL,
---------------------------------NULL,
---------------------------------NULL,
---------------------------------NULL,
---------------------------------NULL ) RETURNING_VALUES ( :pom_count,
-----------------------------------------------------------:pom_01, :pom_02, :pom_03, :pom_04, :pom_05,
-----------------------------------------------------------:pom_06, :pom_07, :pom_08, :pom_09, :pom_10,
-----------------------------------------------------------:pom_11, :pom_12, :pom_13, :pom_14, :pom_15,
-----------------------------------------------------------:pom_16, :pom_17, :pom_18, :pom_19, :pom_20,
-----------------------------------------------------------:pom_21, :pom_22, :pom_23, :pom_24, :pom_25,
-----------------------------------------------------------:pom_26, :pom_27, :pom_28, :pom_29, :pom_30,
-----------------------------------------------------------:pom_31, :pom_32, :pom_33, :pom_34, :pom_35 );
------start_row = pom_count + 1;
------k = k + 1;
----END
--
--...
--
END^

gde je in_full =14 kada je sve OK, a =15 kada ne valja...

I sta tu sad' ima problematicno u dizajnu ?
[ ultraKeen @ 16.12.2004. 07:08 ] @
huh... bio si u pravu!

u pozvanoj proceduri sam probio SMALLINT limit za start_row; dovoljno je bilo promeniti ga u INTEGER i proradilo je... ali sam se bas namucio sa IBAccess-ovim dibagerom: ili ja ili on neznamo da pihvatimo izlazne vrednosti pozvane procedure, pa sam morao rucno da namestam ulazne vrednosti u svakom pozivu citajuci ih iz IBConsol-e... dokumentacija za IBAccess dibager uopste ne pominje kako se radi sa <Parameters Shift+Ctrl+P> dugmetom

e, aj' ti Riste meni posalji na mejl tvoju sliku da je uramim iznad kompa...