[ORACLE] - dynamiczny SQL
ZepZoSo - 29-08-2007 00:11
[ORACLE] - dynamiczny SQL
Witam, da się jakoś zrobić coś takiego:
str:= 'select kol'||numer||' from tabela where id='||ide;
execute immediate str into ???;
Tam gdzie znaki zapytania dobrze by było, by była zmienna nazwa zmiennej (tzn. nazwa zminnej jest "dynamiczna").
Pozdrawiam
-- oSoZpeZ
Wojciech Malinowski - 29-08-2007 00:11
ZepZoSo wrote: > Witam, > da się jakoś zrobić coś takiego: > > str:= 'select kol'||numer||' from tabela where id='||ide; > > execute immediate str into ???; > > Tam gdzie znaki zapytania dobrze by było, by była zmienna nazwa zmiennej > (tzn. nazwa zminnej jest "dynamiczna").
Chyba przekombinowałeś. PL/SQL na szczęście nie udostępnia takiej funkcjonalności - to nie PHP. Twój prawdziwy problem da się na pewno rozwiązać w inny sposób - chyba że tylko teoretyzujesz.
Poza tym w podanym przykładzie nie powinieneś tworzyć zapytania przez zwykłe łączenie napisów. Tam gdzie to możliwe używaj bind variables, np:
s := 'select kol'||numer||' from tabela where id = :1'; execute immediate s into ret_val using ide;
Pozdrawiam, Wojciech Malinowski
Maciej Iwanczewski - 30-08-2007 00:01
ZepZoSo pisze: > Witam, > da się jakoś zrobić coś takiego: > > str:= 'select kol'||numer||' from tabela where id='||ide; > > execute immediate str into ???; > > > Tam gdzie znaki zapytania dobrze by było, by była zmienna nazwa zmiennej > (tzn. nazwa zminnej jest "dynamiczna").
Nie wiem czy to pomoże, ale kiedyś był wątki: [oracle] zmiażdżony przez problem: zapytanie do hierarchi [oracle] zapytanie dynamiczne z "dynamiczną nazwą tabeli"
Pozdrawiam, Maciek
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle 19g +Insert +Insert +Insert...
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
[Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?=
zanotowane.pldoc.pisz.plpdf.pisz.plnocnerozmowy.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|