Классика баз данных - статьи

       

CREATE TABLE brunches OF food_t


Листинг 2. Ограничение подставляемости в объектной таблице

SQL> CREATE TABLE brunches OF food_t NOT SUBSTITUTABLE AT ALL LEVELS; Table created. SQL> SQL> INSERT INTO brunches VALUES ( 2 food_t ('Eggs benedict', 'PROTEIN', 'Farm')); 1 row created. SQL> INSERT INTO brunches VALUES ( 2 dessert_t ('Strawberries and cream', 'FRUIT', 'Backyard', 'N', 2001)); dessert_t ('Strawberries and cream', 'FRUIT', 'Backyard', 'N', 2001)) * ERROR at line 2: ORA-00932: inconsistent datatypes

Листинг 3. Вставка записей в таблицу meal.

BEGIN -- Заполнение таблицы meal INSERT INTO meal VALUES ( SYSDATE, food_t ('Shrimp cocktail', 'PROTEIN', 'Ocean'), food_t ('Eggs benedict', 'PROTEIN', 'Farm'), dessert_t ('Strawberries and cream', 'FRUIT', 'Backyard', 'N', 2001)); INSERT INTO meal VALUES ( SYSDATE + 1, food_t ('Shrimp cocktail', 'PROTEIN', 'Ocean'), food_t ('Stir fry tofu', 'PROTEIN', 'Vat'), cake_t ('Apple Pie', 'FRUIT', 'Baker''s Square', 'N', 2001, 8, NULL)); INSERT INTO meal VALUES ( SYSDATE + 1, food_t ('Fried Calamari', 'PROTEIN', 'Ocean'), -- Butter cookies for dinner? Yikes! dessert_t ('Butter cookie', 'CARBOHYDRATE', 'Oven', 'N', 2001), cake_t ('French Silk Pie', 'CARBOHYDRATE', 'Baker''s Square', 'Y', 2001, 6, 'To My Favorite Frenchman')); END; /

Листинг 4. Использование оператора TREAT.

SQL> SELECT TREAT (main_course AS dessert_t).contains_chocolate chocolatey 2 FROM meal 3 WHERE TREAT (main_course AS dessert_t) IS NOT NULL; CHOCOLATEY --------------- N


Содержание  Назад  Вперед