Předání řetězce jako volitelný parametr procedury

17 views
Skip to first unread message

manduss

unread,
Feb 17, 2012, 8:38:36 AM2/17/12
to Firebird (CZ)
Ahoj,
řeším takový problém. Mám proceduru, která počítá součet záznamů
vyhovujících podmínkám a dále ho zpracovává.
Pro jednoduchost si představte proceduru, která má dva vstupní
parametry - ADatum a ANazev. Já potřebuji nějakým způsobem docílit
toho, abych jednu proceduře zadat zadat konkrétní název a datum a
podruhé aby se podmínka na název ignorovala a kontroloval se pouze
datum.
Zkouším to řešit jedním selectem, který má podmínku jak na název, tak
na datum. Před jeho spuštěním zkontroluji vloženou hodnotu ANazev.
Pokud je ANazev='', tak mu přiřadím hodnotu '%'
Když v cyklu v proceduře použiju, při nezadaném názvu, následující
select:

select SUM(neco) from TABULKA where NAZEV like :ANazev and
DATUM<:ADatum

tak mi vrátí jen záznamy, které mají jen jednopísmenný název. Název je
tabulce definovaný jako CHAR(10).

Funguje mi to správně, když do ANazev vložím '%%%%%%%%%%'
Pokud vezmu samotný select, nahradim proměnnou ANazev za '%', tak
vrátí výsledek správně.
Když proceduře podstrčím konkrétní název, tak to taky zabere.
Nevidíte tam někdo vyloženou blbost nebo jiné řešení? Podobné
parametry mám v té ostré proceduře ještě 4. Psát samotné selecty pro
jejich kombinace se mi moc nechce. Přibude nový a budu všechno
předělávat.

FB mám 2.5.1

honza

Karel Nagy

unread,
Feb 17, 2012, 8:45:32 AM2/17/12
to fireb...@googlegroups.com
J� to �e��m takhle:
select SUM(neco) from TABULKA where (:ANazev = '' or NAZEV like :ANazev) and DATUM<:ADatum
Karel

On 17.2.2012 14:38, manduss wrote:
Ahoj,
�e��m takov� probl�m. M�m proceduru, kter� po��t� sou�et z�znam�
vyhovuj�c�ch podm�nk�m a d�le ho zpracov�v�.
Pro jednoduchost si p�edstavte proceduru, kter� m� dva vstupn�
parametry - ADatum a ANazev. J� pot�ebuji n�jak�m zp�sobem doc�lit
toho, abych jednu procedu�e zadat zadat konkr�tn� n�zev a datum a
podruh� aby se podm�nka na n�zev ignorovala a kontroloval se pouze
datum.
Zkou��m to �e�it jedn�m selectem, kter� m� podm�nku jak na n�zev, tak
na datum. P�ed jeho spu�t�n�m zkontroluji vlo�enou hodnotu ANazev.
Pokud je ANazev='', tak mu p�i�ad�m hodnotu '%'
Kdy� v cyklu v procedu�e pou�iju, p�i nezadan�m n�zvu, n�sleduj�c�
select:

select SUM(neco) from TABULKA where NAZEV like :ANazev and
DATUM<:ADatum

tak mi vr�t� jen z�znamy, kter� maj� jen jednop�smenn� n�zev. N�zev je
tabulce definovanďż˝ jako CHAR(10).

Funguje mi to spr�vn�, kdy� do ANazev vlo��m '%%%%%%%%%%'
Pokud vezmu samotn� select, nahradim prom�nnou ANazev za '%', tak
vr�t� v�sledek spr�vn�.
Kdy� procedu�e podstr��m konkr�tn� n�zev, tak to taky zabere.
Nevid�te tam n�kdo vylo�enou blbost nebo jin� �e�en�? Podobn�
parametry m�m v t� ostr� procedu�e je�t� 4. Ps�t samotn� selecty pro
jejich kombinace se mi moc nechce. P�ibude nov� a budu v�echno
p�ed�l�vat.

FB m�m 2.5.1

honza


--
-------------------------------------
Karel Nagy
odd�len� IT
Soma spol. s r.o.
ďż˝
Tel: +420 465 350 913
e-mail: karel...@soma.cz
web: http://www.soma-eng.com
-------------------------------------


__________ Information from ESET Mail Security, version of virus signature database 6891 (20120217) __________

The message was checked by ESET Mail Security.
http://www.eset.com

manduss

unread,
Mar 16, 2012, 9:41:30 AM3/16/12
to Firebird (CZ)
Omlouvám se za pozdní reakci. Nakonec mi pomohlo předefinovat proměnné
z char na varchar...
Reply all
Reply to author
Forward
0 new messages