dodání ihned! nové
Hledáme programátora do rostoucího týmu ITnetwork.cz, 100% home office, 100% flexibilní pracovní doba. Více informací
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
BF
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.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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.