Firebird 1.5, Invalid argument in EXECUTION STATEMENT - cannot convert to string
R2r - 23-11-2006 00:11
Firebird 1.5, Invalid argument in EXECUTION STATEMENT - cannot convert to string
Witam,
Probuje wykonac nastepujaca procedure:
CREATE PROCEDURE SET_GENERATORS returns ( a bigint) as declare variable c varchar(300); declare variable tmp varchar(200); begin for select rdb$generator_name from rdb$generators where (rdb$generator_name not containing '$') into :tmp do begin c='insert into'||a||'values (gen_id('||tmp||',1)'; execute statement c; suspend; end end
Procedura kompiluje sie poprawnie, natomiast podczas wykonania wyskakuje blad "Invalid argument in EXECUTION STATEMENT - cannot convert to string"
Skad ten blad i jak go naprawic?? Z gory dzieki za pomoc.
pzdr. R2r
Wito - 23-11-2006 00:11
R2r napisal(a): > Witam, > > Probuje wykonac nastepujaca procedure: > > CREATE PROCEDURE SET_GENERATORS > returns ( > a bigint) > as > declare variable c varchar(300); > declare variable tmp varchar(200); > begin > for select rdb$generator_name from rdb$generators > where (rdb$generator_name not containing '$') > into :tmp > do > begin > c='insert into'||a||'values (gen_id('||tmp||',1)'; > execute statement c; > suspend; > end > end > > Procedura kompiluje sie poprawnie, natomiast podczas wykonania > wyskakuje blad "Invalid argument in EXECUTION STATEMENT - cannot > convert to string" > > Skad ten blad i jak go naprawic?? Z gory dzieki za pomoc. > > pzdr. R2r
1. 'insert into'||a||'values --->>> tu brakuje chyba kilku spacji 2. zwracasz "a" a gdzie jest ustawiana wartosci tego "a" 3. zgodnie z komunikatem nie mozna przetworzyc instrukcji gdzie a jest puste 4. "a" powinno byc zadeklarowane jako zmienna wejsciowa (przy zalozeniu ze uzytkownik bedzie podawal nazwe tabeli) a nie jako zmienna zwracana np: CREATE PROCEDURE SET_GENERATORS ( a varchar (50)) wtedy wywolujesz procedure z parametrem
Sprostuj jezeli sie pomylilem
Wito
R2r - 23-11-2006 00:11
Wito napisał(a): > R2r napisal(a): > > Witam, > > > > Probuje wykonac nastepujaca procedure: > > > > CREATE PROCEDURE SET_GENERATORS > > returns ( > > a bigint) > > as > > declare variable c varchar(300); > > declare variable tmp varchar(200); > > begin > > for select rdb$generator_name from rdb$generators > > where (rdb$generator_name not containing '$') > > into :tmp > > do > > begin > > c='insert into'||a||'values (gen_id('||tmp||',1)'; > > execute statement c; > > suspend; > > end > > end > > > > Procedura kompiluje sie poprawnie, natomiast podczas wykonania > > wyskakuje blad "Invalid argument in EXECUTION STATEMENT - cannot > > convert to string" > > > > Skad ten blad i jak go naprawic?? Z gory dzieki za pomoc. > > > > pzdr. R2r > > 1. 'insert into'||a||'values --->>> tu brakuje chyba kilku spacji > 2. zwracasz "a" a gdzie jest ustawiana wartosci tego "a" > 3. zgodnie z komunikatem nie mozna przetworzyc instrukcji gdzie a jest > puste > 4. "a" powinno byc zadeklarowane jako zmienna wejsciowa (przy zalozeniu > ze uzytkownik bedzie podawal nazwe tabeli) a nie jako zmienna zwracana > np: CREATE PROCEDURE SET_GENERATORS ( a varchar (50)) wtedy wywolujesz > procedure z parametrem > > Sprostuj jezeli sie pomylilem > > Wito
Faktycznie brakuje kilku spacji :)).
Jest tez tam zmienna tmp, ktora to podaje nazwe tabeli. Do zmiennej a chce wstawic wartosc z generatora o nazwie przekazanej w zmiennej tmp. Chce uzyskac wartosc danego generatora. Taka jest mysl przewodnia :)
Wito - 23-11-2006 00:11
R2r napisał(a): > Wito napisał(a): > > R2r napisal(a): > > > Witam, > > > > > > Probuje wykonac nastepujaca procedure: > > > > > > CREATE PROCEDURE SET_GENERATORS > > > returns ( > > > a bigint) > > > as > > > declare variable c varchar(300); > > > declare variable tmp varchar(200); > > > begin > > > for select rdb$generator_name from rdb$generators > > > where (rdb$generator_name not containing '$') > > > into :tmp > > > do > > > begin > > > c='insert into'||a||'values (gen_id('||tmp||',1)'; > > > execute statement c; > > > suspend; > > > end > > > end > > > > > > Procedura kompiluje sie poprawnie, natomiast podczas wykonania > > > wyskakuje blad "Invalid argument in EXECUTION STATEMENT - cannot > > > convert to string" > > > > > > Skad ten blad i jak go naprawic?? Z gory dzieki za pomoc. > > > > > > pzdr. R2r > > > > 1. 'insert into'||a||'values --->>> tu brakuje chyba kilku spacji > > 2. zwracasz "a" a gdzie jest ustawiana wartosci tego "a" > > 3. zgodnie z komunikatem nie mozna przetworzyc instrukcji gdzie a jest > > puste > > 4. "a" powinno byc zadeklarowane jako zmienna wejsciowa (przy zalozeniu > > ze uzytkownik bedzie podawal nazwe tabeli) a nie jako zmienna zwracana > > np: CREATE PROCEDURE SET_GENERATORS ( a varchar (50)) wtedy wywolujesz > > procedure z parametrem > > > > Sprostuj jezeli sie pomylilem > > > > Wito > > Faktycznie brakuje kilku spacji :)). > > Jest tez tam zmienna tmp, ktora to podaje nazwe tabeli. tmp PRZEKAZUJE NAZWE GENERATORA A NIE TABELI !!!!
Do zmiennej a chce wstawic wartosc z generatora o nazwie przekazanej w zmiennej tmp.
1. tmp przetrzymuje nazwe generatora i to jest ok 2. wg mnie powinienes TYLKO TO napisac a = gen_id('||tmp||',0) - co zwroci biezaca wartosc generatora
tAK TO POWINNO WYGLADAC CREATE PROCEDURE SET_GENERATORS returns ( a bigint) as declare variable c varchar(300); declare variable tmp varchar(200); begin for select rdb$generator_name from rdb$generators where (rdb$generator_name not containing '$') into :tmp do begin C = ' select gen_id ( ' || :tmp || ',0 ) from RDB$Database'; //lub rdb$databases
a = execute statement c;
suspend; > > > end > > > end
Wito
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Firebird - zmiana NULL na NOT NULL
[firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?=
Insert do tabeli danymi z innej tabeli Firebird
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
firebird - dostep do roznych baz na podstawie nazwy usera,hasla i adresu IP
=?iso-8859-2?q?Konfiguracja_Firebirda_pod_k=B1tem_wykorzystan ia_pami=EAci?=
=?ISO-8859-2?Q?[firebird]_gdzie_si=EA_podzia=B3y_polskie_literki?=
Re: [Firebird] BDE problem z zapisem konfiguracji pod Windows Vista
=?iso-8859-2?q?firebird_i_triggery_-_logowanie_historii_zmian_zawarto=B6ci?=
=?iso-8859-2?q?[firebird]_-_jak_zastapi=E6_pole_longtext_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.pllisinski.htw.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 |
|