Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Seeking Equivalent of InterBase Domain
Serge Rielau wrote:
> William Robertson wrote:
>> Jim Smith wrote: >>> In message <1169531413.53689_at_bubbleator.drizzle.com>, DA Morgan >>> <damorgan_at_psoug.org> writes >>>> hasta_l3_at_hotmail.com wrote: >>>> >>>>> you have to repeat the type constraints for every column >>>>> defined with that type. It's a development nigthmare... >>>>> Monte, FWIW we are using SQL*Plus DEFINE ... >>>>> --- Raoul >>>> Possibly but not necessarily. Types have type bodies that >>>> contain methods. What is it that you would want to do, or >>>> the OP wants to do, that could not be defined in a type >>>> body. >>>> >>>> I'm not going to say that a method is or is not going to >>>> do the job. But I'd sure like to see a substantive example >>>> of what is being asked to see if it is or is not the case >>>> before just agreeing that a domain can do something that >>>> can not be done in Oracle. >>> To use your own exanp >>> SQL> CREATE OR REPLACE TYPE first_name AS OBJECT ( >>> 2 first_name VARCHAR2(25)); >>> 3 / >>> >>> Type created. >>> >>> SQL> create table names ( >>> 2 fname first_name); >>> >>> Table created. >>> >>> SQL> insert into names(fname) values ('adsfads'); >>> insert into names(fname) values ('adsfads') >>> * >>> ERROR at line 1: >>> ORA-00932: inconsistent datatypes: expected JIM.FIRST_NAME got CHAR >>> >>> The domain as described by the OP defines types which can be used like >>> native types. >> >> I suppose you could work around the syntax using views and INSTEAD OF >> triggers to fake a scalar datatype, but even so, unless I'm missing >> something, one limitation of object types is that a user-defined >> constructor must differ in signature from the system-defined one, >> otherwise you get something like this: >> >> SQL> SELECT BOOL_DOM('Y') FROM dual; >> SELECT BOOL_DOM('Y') FROM dual >> * >> ERROR at line 1: >> ORA-06553: PLS-307: too many declarations of 'BOOL_DOM' match this call >> >> Here I created a BOOL_DOM type with a constructor function that checked >> whether the attribute self.truth is 'Y' or 'N'. You could add a dummy >> attribute of course. >>
Oh I'm open to the fact that I may be incorrect. I am just looking for someone to explicitly state something that can not be done.
I'm not claiming a constructor or a method isn't required. Rather I looking for something I am precluded from doing for lack of them.
In fact anyone using Oracle Designer has full access to domains and has had that for years. I can remember defining them in Oracle Designer back in the early 90s.
-- Daniel A. Morgan University of Washington damorgan_at_x.washington.edu (replace x with u to respond) Puget Sound Oracle Users Group www.psoug.orgReceived on Tue Jan 23 2007 - 11:52:42 CST