0

私は次のことを行いましたが、ボディタイプの作成に問題がありました。助けてください!!

 SQL> desc theater_t
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TNO                                                NUMBER
 NAME                                               VARCHAR2(15)
 ADDRESS                                            ADDRESS_TY
 PHONE                                              PH_TY
 START_DATE                                         DATE
 END_DATE                                           DATE

METHOD
------
 MEMBER FUNCTION FEATURED_DAYS RETURNS NUMBER

SQL> desc theaters
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TNO                                                NUMBER
 NAME                                               VARCHAR2(15)
 ADDRESS                                            ADDRESS_TY
 PHONE                                              PH_TY
 START_DATE                                         DATE
 END_DATE                                           DATE

SQL> desc nowshowing
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 FILM                                      NOT NULL NUMBER
 THEATER                                            REF OF THEATER_T

Theaters は、theater_t 型のテーブルです。end_date-start_date を返す Featured_days を作成したいと考えています。しかし、私はそれを行うことができません。

4

1 に答える 1

1
CREATE OR REPLACE type theater_t AS OBJECT
     (    tno        NUMBER,
          name       VARCHAR2(10),
          address    VARCHAR2(20),
          phone      NUMBER,
          start_date DATE,
          end_date   DATE,
          member FUNCTION featured_days
          return number);

私が作成した体の部分は次のとおりです。

CREATE OR REPLACE TYPE BODY theater_t
IS
     MEMBER FUNCTION FEATURED_DAYS  RETURN NUMBER
IS
BEGIN
     RETURN (end_date- start_date);
END;
END;
/

FEATURED_DAYSの値を次のように返すことができます。

SET serveroutput ON
declare
     obj theater_t := theater_t ( 1,'ajmal','my_address',9876,to_date('01-jan-2013','dd-mon-yyyy'),to_date('07-feb-2013','dd-mon-yyyy'));
BEGIN
     DBMS_OUTPUT.PUT_LINE (obj.name||' '||obj.featured_days||' days');
END;

そして、あなたは得るでしょう:

anonymous block completed

ajmal 37 days

これがあなたが試みていることであることを願っています。

于 2013-02-07T10:10:31.857 に答える