Avatar
Oreza
Člen
Avatar
Oreza:

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. listopadu 13:36
Avatar
mixxy
Člen
Avatar
mixxy:

Co tohle reseni:

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

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

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. listopadu 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.