Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Oreza
Člen
Avatar
Oreza:25.11.2016 13:36

Ahoj, prosím o radu, strýček google zatím selhává...:)

Jakým způsobem lze ve funkci Oracle definovat do lokální proměnné název tabulky a tuto proměnnou následně v té samé funkci použít jako název tabulky v selectu? Pokud použiji následující:

CREATE OR REPLACE FUNCTION FMK_test1(V_JM IN VARCHAR2, V_PRJM IN VARCHAR2, V_DNAR IN DATE)
RETURN VARCHAR2
AS
ADKOD VARCHAR2(9);
TABULKA VARCHAR2(20);
ROK VARCHAR2(2);
XPRJM VARCHAR(30);
XJM VARCHAR(30);
XDATSPLAT DATE;
XUHTU FLOAT;
XAD VARCHAR(9);
BEGIN
SELECT SUBSTR(TO_CHAR(­TRUNC(SYSDATE)), -2)
INTO ROK
FROM DUAL;

TABULKA:='BMI_OD­PAD.HPRE001'||R­OK;

SELECT AD
INTO ADKOD
FROM BMI_ODPAD.ADO001
WHERE JM=V_JM AND
PRJM=V_PRJM AND
trunc(DNAR)=V_DNAR;

SELECT AD, UHTU, DATSPLAT
INTO XAD, XUHTU, XDATSPLAT
FROM TABULKA
WHERE AD=ADKOD;

RETURN XAD||'|'||XDAT­SPLAT||'|'||XUH­TU;
END;
/

Předem díky za rady.

 
Odpovědět
25.11.2016 13:36
Avatar
mixxy
Člen
Avatar
mixxy:26.11.2016 2:34

Co tohle reseni:

define value1 = 'sysdate'
SELECT &&value1 from dual;

Nahoru Odpovědět
26.11.2016 2:34
Neni dulezite mnoho vedet a znat. Dulezite je vedet, co je treba.
Avatar
Oreza
Člen
Avatar
Odpovídá na mixxy
Oreza:28.11.2016 16:46

Díky, vyřešeno trochu jiným způsobem, pro inspiraci přikládám:

i_dotaz:='SELECT DISTINCT AD, UHTU, DATSPLAT FROM '||TABULKA ||' WHERE AD='''||ADKOD||''''

EXECUTE IMMEDIATE i_dotaz INTO XAD, XUHTU, XDATSPLAT;

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
28.11.2016 16:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.