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

Theatres 是一个类型为theater_t 的表。我想创建一个返回 end_date-start_date 的 features_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 回答