Ötletet, tanácsot, útbaigazítást szeretnék kérni a következő dologgal kapcsolatban:
adott egy view, ami favágó módon az alábbi - két eltérő elem kivételével többszörösen, sok helyen ugyanazt a szerkezetet tartalmazza: (ez csak egy részlete aview-nak)
SELECT azonos_oszlop_1,
azonos_oszlop_2,
VÁLTOZÓ_OSZLOP,
azonos_számítási_művelet
FROM azonos_tábla WHERE VÁLTOZÓ FELTÉTEL
AND azonos_feltétel GROUP BY azonos_oszlop_1
UNION ALL
SELECT azonos_oszlop_1,
azonos_oszlop_2,
VÁLTOZÓ_OSZLOP,
azonos_számítási_művelet
FROM azonos_tábla WHERE VÁLTOZÓ FELTÉTEL
AND azonos_feltétel GROUP BY azonos_oszlop_1
UNION ALL
SELECT azonos_oszlop_1,
azonos_oszlop_2,
VÁLTOZÓ_OSZLOP,
azonos_számítási_művelet
FROM azonos_tábla WHERE VÁLTOZÓ FELTÉTEL
AND azonos_feltétel GROUP BY azonos_oszlop_1
A kérdés az, hogy függvény alkalmazásával megoldható lenne, hogy a függvény bemenő paraméterei legyenek pl változóba téve VÁLTOZÓ_OSZLOP és VÁLTOZÓ_FELTÉTEL?
A trunc(sysdate)-t nem kell "előre" végrehajtani, csak a execute immediate során, ezért a
... vusazon || ',' ||TRUNC(SYSDATE) || ',' || :P6_XVEVO2 ... helyett a ... vusazon || ',TRUNC(SYSDATE),' || :P6_XVEVO2 ... lesz jó.
Az execute immediate-ben futtatott string így néz ki: INSERT INTO EU_MEGR_B02 (meboazon,meusazon,mefelvdate,meveazon,meteazon,memenny) VALUES (1,2,TRUNC(SYSDATE),3,4,5)
Ezt asszem megfejtettem. Ezzel az a helyzet, hogy itt a trunc az idezojelen kivul van. Egyreszt emiatt szimpla karom kell a dd-hez. De pluszban igy az tortenik, hogy eloall a levagott datum, az stringge alakul az nls beallitasoknak megfeleloen, es ez a string konkatenalodik be az insert statement-be. Nem lesz korulotte karom, es egyebkent sem egeszseges implicit string-datum konverziora kenyszerinteni az insertet.
Ez jo kell legyen:
sql:='insert into table t (datum_mezo) values (trunc(sysdate))';
Ez is, de ilyet nem irnek:
sql:='insert into table t (datum_mezo) values ('''||trunc(sysdate))||'''';
page paraméterek. a lapon vannak input mezők, amik jó sok réteg után a logikának megírt pl/sql-ben így hivatkozhatóak. külön vicces hogy van vagy 4 féle szintaxis amivel hivatkozni lehet, van ahol így van ahol úgy.
Most kellene átmenni a p***.hu-ra, mert a formázatlan HTML-ben nem lehet forráskódot átlátni... (mondjuk én már ott elakadtam, hogy nem tudom, mi az az APEX; ha mondjuk Pro*C vagy OCI lenne, talán tudnék mondani valamit)
szerintem macskakorombe irtad a DD-t. a peldaban az nem macskakorom, hanem ketto darab aposztrof. oracle-ban a string az aposztrofban van: 'alma' . ha a stringbe akarsz aposztrofot irni, akkor ugy kell escapeelni hogy duplan irod. 'a gyors munka erdekeben brazil ''gepsort'' alkalmaztunk'
ORA-06550: line 17, column 64: PLS-00103: Encountered the symbol "DD" when expecting one of the following: ) , * & = - + < / > at in is mod remainder not rem=> <an exponent (**)> <> or != or ~= >= <= <> and or like like2 like4 likec between || multiset member submultiset The symbol ", was inserted before "DD" to continue.
CREATE OR REPLACE TRIGGER "BI_EU_MEGR_B02" before insert on "EU_MEGR_B02" for each row begin if :NEW."MEAZON" is null then select "EU_MEGR_B02_SEQ".nextval into :NEW."MEAZON" from sys.dual; end if; end;