Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Stored procedura - promt user for input

[es] :: Oracle :: Stored procedura - promt user for input

[ Pregleda: 2730 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mladenmp

Član broj: 193827
Poruke: 51
*.cable.globalnet.hr.

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Stored procedura - promt user for input26.02.2016. u 22:03 - pre 98 meseci
Pozdrav svima.

Pokusavam da napravim proceduru koja zahtjeva da korisnik unese vrijednost koja je potrebna u where uslovu.
Procedura izgleda ovako:
Code:

PROCEDURE plocations 
(
  DNAME IN VARCHAR2  


) AS 
 res   VARCHAR2(20);
BEGIN

  select locName into res from location where lid in  (select lid from examine
                      where did =(select did from dogs where dogname = DNAME)
                       );
  DBMS_OUTPUT.PUT_LINE(res);
END plocations;


Dakle korisnik treba da unese ime psa i da dobije lokaciju.
Proceduru pozivam u SQL*Plus:
Code:

SET SERVEROUTPUT ON
VARIABLE DNAME VARCHAR2(20)

accept DNAME prompt "please enter Dog Name: "

exec plocations (:DNAME)


Međutim, dobijam sledeću grešku:
Code:

Error starting at line 6 in command:
exec plocations (:DNAME)
Error report:
ORA-01403: no data found
ORA-06512: at "HR.PLOCATIONS", line 10
ORA-06512: at line 1
01403. 00000 -  "no data found"
*Cause:    
*Action:


Ima li neko ideju?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Stored procedura - promt user for input26.02.2016. u 22:27 - pre 98 meseci
Select upit ti nije vratio ni jedan red, zato se pojavio onaj exception ORA-01403

Code (plsql):

CREATE OR REPLACE PROCEDURE plocations( dname IN  VARCHAR2) IS
res VARCHAR2(20);
BEGIN
  DBMS_OUTPUT.put_line('Uneli ste dname=' || dname);
  SELECT locname INTO res
  FROM location l, examine e, dogs d
  WHERE d=dname
    AND l.lid = e.lid
    AND e.did = d.did;
  DBMS_OUTPUT.PUT_LINE(res);
EXCEPTION
  WHEN NO_DATA_FOUND
    DBMS_OUTPUT.put_line('Ne postoji ni jedan slog za dname=' || dname);
  WHEN TOO_MANY_ROWS
    DBMS_OUTPUT.put_line('Postoji vise slogova za dname=' || dname);
END;
/

SET SERVEROUTPUT ON
VAR DNAME VARCHAR2(20)

accept DNAME prompt "please enter Dog Name: "

exec plocations (:DNAME)
 


[Ovu poruku je menjao djoka_l dana 26.02.2016. u 23:43 GMT+1]
 
Odgovor na temu

mladenmp

Član broj: 193827
Poruke: 51
*.cable.globalnet.hr.

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Re: Stored procedura - promt user for input26.02.2016. u 22:35 - pre 98 meseci
Sorry, moja greška, trebao sam napomenuti da kada izvršim upit:
Code:

select locName from location where lid in  (select lid from examine
                      where did =(select did from dogs where dogname = 'Spot')
                       );

dobijem rezultat.

Dakle, kada dobijem prompt i ukucam "Spot" vrati mi grešku iz prethodnog posta...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Stored procedura - promt user for input26.02.2016. u 22:44 - pre 98 meseci
dodaj ove debug linije koje sam ja dodao, pa da vidimo šta si poslao...
 
Odgovor na temu

mladenmp

Član broj: 193827
Poruke: 51
*.cable.globalnet.hr.

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Re: Stored procedura - promt user for input26.02.2016. u 23:02 - pre 98 meseci
Evo rezultata:
Code:

> set SERVEROUTPUT ON
> VAR DNAME VARCHAR2(20)
> accept DNAME prompt "please enter Dog Name: "
> exec plocations (:DNAME)
anonymous block completed
Uneli ste dname=
Ne postoji ni jedan slog za dname=


Dakle uopšte se ne čuva ono što upišem....
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Stored procedura - promt user for input26.02.2016. u 23:16 - pre 98 meseci
Sada vidim šta pokušavaš - ne možeš sa ACCEPT da dodeliš vrednost varijabli, ali možeš da radiš supstituciju.

Primer

accept DNAME prompt "please enter Dog Name: "
exec plocations ('&DNAME')

varijabli možeš da dodeliš vrednost u bloku

var dname varchar2(20)
begin :dname := 'Spot; end;
/

 
Odgovor na temu

mladenmp

Član broj: 193827
Poruke: 51
*.cable.globalnet.hr.

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Re: Stored procedura - promt user for input26.02.2016. u 23:21 - pre 98 meseci
DA DA DA !!!

To je to !!!

Sve radi !!!

Hvala veliko za pomoć!
 
Odgovor na temu

[es] :: Oracle :: Stored procedura - promt user for input

[ Pregleda: 2730 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.