ďťż
 
Oracle pl/sql problem ďťż
 
Oracle pl/sql problem
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Oracle pl/sql problem



Elita - 27-07-2006 01:59
Oracle pl/sql problem
  w procedurze na serwerze ORACLE mam taki fragment:

pWhere := 'WHERE idPrzesylki BETWEEN :pMin AND :pMax AND ' ||
pFiltr;
pSql := 'SELECT COUNT(*) FROM tPrzesylki ' || pWhere;

EXECUTE IMMEDIATE pSql INTO pIlosc USING pMin,pMax;

gdzie pFiltr jest przekazywane z PHP i wygląda np tak : UPPER(adr_Nazwa1)
LIKE 'BOB%'
W php wywala mi błąd oraclowy:
Ora_Exec failed (ORA-06502: PL/SQL: bł?d liczby lub warto?ci ORA-06512: przy
"EPACZKI.MAXM", linia 49 ORA-06512: przy linia 1 -- while processing OCI
function OEXEC/OEXN)

ale jeżeli robię tak (bez dodawania łańcucha <pFiltr>):

pWhere := 'WHERE idPrzesylki BETWEEN :pMin AND :pMax';
pSql := 'SELECT COUNT(*) FROM tPrzesylki ' || pWhere;

EXECUTE IMMEDIATE pSql INTO pIlosc USING pMin,pMax;

to działa dobrze.
moje pytanie brzmi jak mam łańcuch <pFiltr> dołączyć do zmiennej <pWhere>
żeby nie było błędu





Michał Kuratczyk - 27-07-2006 01:59

  Elita wrote:
> w procedurze na serwerze ORACLE mam taki fragment:
>
> pWhere := 'WHERE idPrzesylki BETWEEN :pMin AND :pMax AND ' ||
> pFiltr;
> pSql := 'SELECT COUNT(*) FROM tPrzesylki ' || pWhere;
>
> EXECUTE IMMEDIATE pSql INTO pIlosc USING pMin,pMax;
[..]
> moje pytanie brzmi jak mam łańcuch <pFiltr> dołączyć do zmiennej <pWhere>
> żeby nie było błędu

Generalnie robisz to dobrze, ale:
- coś najwyraźniej jest nie tak z filtrem (może powinieneś użyć podwójnych
apostrofów, czyli: LIKE ''FOOBAR%'')
- jeżeli wklejasz do zapytania stringi pobrane od użytkownika bez
walidowania ich, to... zmień to czym prędzej (hint: sql-injection). :->

--
Michał Kuratczyk




Elita - 27-07-2006 01:59

  ale dupa ze mnie w php miałem:
ora_bind($cursor,"pFiltr", ":pFiltr", 100, ORA_BIND_IN);

zmieniłem 100 na 255 i działa, sorry za zawracanie głowy

do poczytania dokumentacji skłoniła mnie odpowiedz Michała Kuratczyka, że
niby wszystko mam dobrze w procedurze

jeszcze raz dzięki
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [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?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [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?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com