|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Nikolay Kulikov 2:5020/400 31 Jan 2002 16:25:01 To : Vladimir Pavlikov Subject : Re: в чем зло хранимых процедур-2 -------------------------------------------------------------------------------- Hello, Vladimir! VP> Object People ( VP> lastname char[50] VP> .... VP> ) VP> Object Employee inherited People ( VP> ... VP> ) VP> select * from Employee where lastname = 'Иванов' VP> Т.е. запрос выполняется по "таблице", в которой lastname VP> отсутствует (непосредственно), но присутствует опосредовано. VP> При этом он должен вернуть только Ивановых-_служащих_. VP> Присутствующие в базе Ивановы - рабочие (дети, пенсионеры и VP> т.д.) идут лесом. Т.е. резалтсет _другой_, чем при запросе VP> через People. VP> И никакая это не мечта, вполне реализуемо. VP> Это лишь один из моментов, остальное некогда :( Может, через VP> несколько дней, если желание останется. У тебя и у меня :) VP> -- VP> Владимир Павликов. Сдается мне что это можно сделать в Informix и DB2. Выдержка из документации Example 1: Create a type for department. CREATE TYPE DEPT AS (DEPT NAME VARCHAR(20), MAX_EMPS INT) REF USING INT MODE DB2SQL Example 2: Create a type hierarchy consisting of a type for employees and a subtype for managers. CREATE TYPE EMP AS (NAME VARCHAR(32), SERIALNUM INT, DEPT REF(DEPT), SALARY DECIMAL(10,2)) MODE DB2SQL CREATE TYPE MGR UNDER EMP AS (BONUS DECIMAL(10,2)) MODE DB2SQL Example 3: Create a type hierarchy for addresses. Addresses are intended to be used as types of columns. The inline length is not specified, so DB2 will calculate a default length. Encapsulate within the address type definition an external method that calculates how close this address is to a given input address. Create the method body using the CREATE METHOD statement. CREATE TYPE address_t AS (STREET VARCHAR(30), NUMBER CHAR(15), CITY VARCHAR(30), STATE VARCHAR(10)) NOT FINAL MODE DB2SQL METHOD SAMEZIP (addr address_t) RETURNS INTEGER LANGUAGE SQL DETERMINISTIC CONTAINS SQL NO EXTERNAL ACTION METHOD DISTANCE (address_t) RETURNS FLOAT LANGUAGE C DETERMINISTIC PARAMETER STYLE DB2SQL NO SQL NO EXTERNAL ACTION CREATE TYPE germany_addr_t UNDER address_t AS (FAMILY_NAME VARCHAR(30)) NOT FINAL MODE DB2SQL CREATE TYPE us_addr_t UNDER address_t AS (ZIP VARCHAR(10)) NOT FINAL MODE DB2SQL Example 4: Create a type that has nested structured type attributes. CREATE TYPE PROJECT AS (PROJ_NAME VARCHAR(20), PROJ_ID INTEGER, PROJ_MGR MGR, PROJ_LEAD EMP, LOCATION ADDR_T, AVAIL_DATE DATE) MODE DB2SQL Best Regards, Nikolay Kulikov --- ifmail v.2.15dev5 * Origin: IBM CEMA (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/6577137e8874.html, оценка из 5, голосов 10
|