|
|
|
Oracle specific SQL commands |
|
|
|
|
CREATE TYPE source
AS OBJECT
( |
|
name VARCHAR2(30), |
|
ra
FLOAT, |
|
dec
FLOAT |
|
) |
|
NOT FINAL; |
|
/ |
|
|
|
|
CREATE TYPE bsource |
|
UNDER source |
|
( |
|
bmag NUMBER(5, 2) |
|
) |
|
NOT FINAL; |
|
/ |
|
|
|
|
An object table is a table with a single column
of a user-defined type
CREATE TABLE sources OF source; |
|
INSERT INTO sources
VALUES
(
rsource( 'R2D2', 4.3, -22.9, 21.2 )
); |
|
|
|
|
SELECT VALUE(*) FROM sources;
retrieves constructors from “sources” |
|
CREATE VIEW sources$v
OF source;
an object
view with objects of type “source” |
|
CREATE VIEW bsources$v OF bsource
UNDER sources$v;
an object view with objects of type “bsource” which, at the same time,
makes those objects available from the “sources$v”
view |
|
|
|
|
CREATE TABLE mysources
(
petsource VARCHAR2(170),
bestars REF source
); |
|
|
|
|
Include in the TYPE definition:
MEMBER
FUNCTION lon() RETURN NUMBER |
|
CREATE TYPE BODY source
AS MEMBER FUNCTION lon ()
RETURN NUMBER
IS BEGIN
/* left as an exercise */
RETURN lon;
END;
END; |
|
|
|
|
Fixed maximum size |
|
Fixed order |
|
CREATE TYPE intarray
AS VARRAY(20) OF INTEGER; |
|
/ |
|
|
|
|
Unlimited maximum size |
|
Random order |
|
CREATE TYPE intarray
AS TABLE OF INTEGER; |
|
CREATE TABLE demo
( name VARCHAR2(37), v intarray )
NESTED TABLE v STORE AS vtable; |
|
|
|
|
sqlplus username@databaseservice |
|
@script - start script named script.sql |
|
edit – edit the buffer |
|
describe – gives definition of datastructures |
|
spool – write results to file |
|
!command – run unix command in a shell |
|
! – spawn a unix shell |
|
|
|
|
oemapp worksheet |
|
oemapp console (requires SELECT ANY DICTIONARY
privilige) |
|
Follow the built-in quick tours for an overview
of database concepts and functions. |
|
Use the ‘Show SQL’ button to see what the
equivalent SQL query is for a GUI operation |
|
|
|
|
Python “class” ~ Oracle “type” |
|
Python DB API for direct access |
|
DBObject for ASTRO-WISE access |
|
from astro.database.DBMain import DBObject,
persistent
class Source(DBObject):
name = persistent(‘The name’, str, ‘Nameless’)
ra = persistent(‘R.A.’, float, 0.0)
dec = persistent(‘Declination’, float,
0.0) |
|
The class is mapped to a “TYPE”, a “TABLE” and a
“VIEW”! |
|