Avatar billede sorba Nybegynder
25. juni 2004 - 11:00 Der er 3 kommentarer og
2 løsninger

dynamis sql

Hej

Jeg vil lave en funktion med en selct hvor jeg sender et tabelnavn ned:

fnc_select(p_table in varchar, p-navn in varchar)is

osv

select *
from p_table t
where t.navn = p_navn)

Jeg har lidt problemer med at få programmet til at læse p_table. Er der nogen der ved noget om det?
Avatar billede teepee Nybegynder
25. juni 2004 - 12:53 #1
Sådan kan du ikke gøre.
Prøv at læse lidt på EXECUTE IMMEDIATE rutinen eller den lidt afdankede dbms_sql pakke.
Avatar billede sorba Nybegynder
25. juni 2004 - 16:03 #2
Så langt er jeg også nået. Nu er mit næste problem bare at jeg kan lave en sql der ser således ud
v_sql :='select count(*) as antal  from tabel where id = 1;
execute immediate.

men jeg kan ikke finde ud af om der er fundet noget.
Jeg har forsøgt mig med en into v_antal men det vil den ikke æde.
Nogen forslag?
Avatar billede dmk Nybegynder
26. juni 2004 - 19:10 #3
Jeg sidder desværre ikke lige med Oracle kontakt her i weekenden, så jeg kan ikke huske den nøjagtige sytax. Men noget i stil med:

v_cursor mycursor.refcursor;
v_sql varchar(200);
v_field1 varchar(200);
v_field2 varchar(200);

begin
  v_sql:='select field1, field2 from '+p_TableName;
  open v_cursor for v_sql;
  loop
    fetch v_cursor into v_field1, v_field2;
    exit when v_cursor%notfound;
    dbms_output.put_line('resultrow: '+v_field1+'  '+v_field2);
  end loop; 
  close v_cursor;
end;


Jeg er som sagt ikke helt sikker på det med OPEN .. FOR .. syntaksen, men prøv at slå OPEN op.

/DMK
Avatar billede sorba Nybegynder
28. juni 2004 - 09:54 #4
Det har sikkert noget med versionen at gøre, men jeg kan slet ikke få det til at virke. Jeg kører med version 6 og alt det smarte er sikkert først i senere versioner.
Avatar billede sorba Nybegynder
28. juni 2004 - 10:35 #5
Med lidt flid og brug af dbms_sql pakke og dmk's eksempel kom det alligevel til at virke. Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester