Avatar billede starfire Nybegynder
15. juni 2008 - 19:26 Der er 3 kommentarer og
1 løsning

Problem med type (pl/sql)

Hej,
Jeg sidder og leger lidt med typer hvor jeg har fået denne pæne fejl. Umiddelbart tyder det på, at jeg har en dublet eller lignende, men efter at have skimtet min kode synes det ikke umiddelbart at være tilfældet. Det har ikke hjulpet synderligt at google på fejlkoden.

ORA-06550: line 7, column 14:
PLS-00307: too many declarations of 'T_MOVIE' match this call
ORA-06550: line 7, column 3:
PL/SQL: Statement ignored

Her er headeren:

CREATE OR REPLACE TYPE t_movie AS OBJECT
(
  v_t_mov_title VARCHAR2(64),
  CONSTRUCTOR FUNCTION t_movie(mov_title IN VARCHAR2) RETURN SELF AS RESULT,
  MEMBER PROCEDURE get_all_movies,
  MEMBER PROCEDURE get_movie(my_title IN VARCHAR2)
)

I type body'en har jeg ikke nogen kode i de 2 procedurer endnu, de er bare tomme hylstre. Derfor smider jeg kun koden til constructoren som smider værdien af mov_title over i v_t_mov_title:

  CONSTRUCTOR FUNCTION t_movie(mov_title IN VARCHAR2) RETURN SELF AS RESULT IS
  BEGIN
    dbms_output.put_line('Initialized with ' || mov_title);
    v_t_mov_title := mov_title;
  END;

Jeg implementerer min type med:

DECLARE
  v_movie sys.t_movie;
BEGIN
  v_m := NEW sys.t_movie('Test');
END;

Og når jeg kører det, så går den galt med den ovenstående fejlbesked.

Er der nogen af jer der har en hurtig løsning eller løsningsforslag? Jeg har fået stirret mig blind på det :)
Avatar billede arne_v Ekspert
16. juni 2008 - 05:35 #1
Jeg er ret sikker på at fejlen skyldes at Oracle selv laver en constructor med
1 argument og at Oracle derfor ikke kan se om du vil kalde default eller din
egen constructor.
Avatar billede arne_v Ekspert
16. juni 2008 - 05:36 #2
v_movie := NEW t_movie(mov_title => 'Test');

måske
Avatar billede starfire Nybegynder
18. juni 2008 - 02:15 #3
Det var lige det, jeg manglede. Det løste problemet!
Smid venligst et svar :)
Avatar billede arne_v Ekspert
18. juni 2008 - 03:12 #4
svar
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