Sales Tracking Object Setup Script

All these scripts and test data are available at www.quepublishing.com. Put 0789726718 in the search field.

rem
rem     Sales Tracking Application Oracle9i Objects
rem         Oracle9i Development By Example
rem            by Dan Hotka
rem         Que Publications May 2001
rem         All Rights Reserved
rem
spool INSTALL_sales_tracking_objects.log

DROP TABLE st_inventory       CASCADE CONSTRAINTS;
DROP SEQUENCE st_inv_seq;

DROP TABLE st_parts           CASCADE CONSTRAINTS;
DROP TABLE st_inv_type                CASCADE CONSTRAINTS;
DROP TABLE st_inv_make                CASCADE CONSTRAINTS;
DROP TABLE st_inv_model       CASCADE CONSTRAINTS;
DROP TABLE st_vendor          CASCADE CONSTRAINTS;
DROP SEQUENCE st_vendor_seq;
DROP TABLE st_customer                CASCADE CONSTRAINTS;
DROP TABLE st_staff           CASCADE CONSTRAINTS;
DROP SEQUENCE st_staff_seq;
DROP TABLE st_bill_time       CASCADE CONSTRAINTS;
DROP TABLE st_departments     CASCADE CONSTRAINTS;
DROP TABLE st_job_description    CASCADE CONSTRAINTS;




CREATE TABLE st_inventory
       (inv_id                  NUMBER(6)    CONSTRAINT pk_inv_id PRIMARY KEY
                                             USING INDEX TABLESPACE st_index01,
       inv_type                VARCHAR2(10),
       inv_make                VARCHAR2(10),
       inv_model               VARCHAR2(10),
       inv_color               VARCHAR(10),
       inv_year                NUMBER(4),
       inv_purchase_vendor_id  NUMBER(6),
       inv_purchase_amt        NUMBER(9,2)   NOT NULL,
       inv_purchase_date       DATE           NOT NULL,
       inv_purchase_photo      BLOB,
       inv_sale_customer_id    NUMBER(6),
       inv_sale_amt            NUMBER(9,2),
       inv_sale_date           DATE,
       inv_sale_photo          BLOB,
       inv_description         VARCHAR2(20),
       inv_insert_user         VARCHAR2(20),
       inv_insert_date         DATE,
       inv_update_user         VARCHAR2(20),
       inv_update_date         DATE)
       TABLESPACE st_data01
       PCTFREE 30
       PCTUSED  50
       STORAGE (INITIAL 10K
               NEXT 10K
               MINEXTENTS 5
               MAXEXTENTS 10)
       LOB (inv_purchase_photo, inv_sale_photo) STORE AS
               (TABLESPACE st_lob01
               STORAGE (INITIAL 10K
                       NEXT 10K
                       MINEXTENTS 5
                       MAXEXTENTS 100)
               CHUNK 500
               NOCACHE
               NOLOGGING);


CREATE SEQUENCE st_inv_seq
        START WITH 1
        INCREMENT BY 1
        CACHE 10;

CREATE TRIGGER st_inventory_trg BEFORE INSERT OR UPDATE ON st_inventory
        FOR EACH ROW
        BEGIN
               IF :old.inv_insert_user IS NULL THEN
                       :new.inv_insert_user := USER;
                       :new.inv_insert_date := SYSDATE;
                       :new.inv_update_user := NULL;
                       :new.inv_update_date := NULL;
               ELSE
                       :new.inv_insert_user := :old.inv_insert_user;
                       :new.inv_insert_date := :old.inv_insert_date;
                       :new.inv_update_user := USER;
                       :new.inv_update_date := SYSDATE;
               END IF;
         END;
/

CREATE TABLE st_inv_type
       (inv_type              VARCHAR(10))
       TABLESPACE st_refdata01
       CACHE
       PCTFREE 1
       PCTUSED 90
       STORAGE (INITIAL 1K
               NEXT 1K
               MINEXTENTS 1
               MAXEXTENTS 100);

CREATE TABLE st_inv_make
       (inv_make             VARCHAR(10))
        TABLESPACE st_refdata01
        CACHE
        PCTFREE 1
        PCTUSED 90
        STORAGE (INITIAL 1K
               NEXT 1K
               MINEXTENTS 1
               MAXEXTENTS 100);

CREATE TABLE st_inv_model
       (inv_model           VARCHAR2(10))
        TABLESPACE st_refdata01
        CACHE
       PCTFREE 1
       PCTUSED 90
       STORAGE (INITIAL 1K
               NEXT 1K
               MINEXTENTS 1
               MAXEXTENTS 100);


CREATE TABLE st_vendor
       (vendor_id             NUMBER(6)        PRIMARY KEY,
        vendor_name           VARCHAR2(30)     NOT NULL,
        vendor_street1        VARCHAR2(30),
        vendor_street2        VARCHAR2(30),
        vendor_city           VARCHAR2(20),
        vendor_state          VARCHAR2(2),
        vendor_zipcode        VARCHAR2(10),
        vendor_tax_id         VARCHAR2(20)     NOT NULL)
        ORGANIZATION INDEX
        TABLESPACE st_data02
        PCTTHRESHOLD 20 INCLUDING vendor_id
        OVERFLOW TABLESPACE st_iot_overflow01
        STORAGE (INITIAL 5K
               NEXT 5
               MINEXTENTS 5
               MAXEXTENTS 100);

CREATE SEQUENCE st_vendor_seq
        START WITH 1
        INCREMENT BY 1
        CACHE 10;
ALTER TABLE st_inventory      ADD CONSTRAINT fk_inv_purchase_vendor_id
     FOREIGN KEY (inv_purchase_vendor_id)
                              REFERENCES sales_tracking.st_vendor(vendor_id);

CREATE TABLE st_customer
       (customer_id           NUMBER(6) PRIMARY KEY,
        customer_name         VARCHAR2(30) NOT NULL,
       customer_street1       VARCHAR2(30),
       customer_street2       VARCHAR2(30),
       customer_city          VARCHAR2(20),
       customer_state         VARCHAR2(2),
       customer_zipcode       VARCHAR2(10),
       customer_insert_user   VARCHAR2(20),
       customer_insert_date   DATE,
       customer_update_user   VARCHAR2(20),
       customer_update_date   DATE)
       ORGANIZATION INDEX
       TABLESPACE st_data02
       PCTTHRESHOLD 20 INCLUDING customer_id
       OVERFLOW TABLESPACE st_iot_overflow01
       STORAGE (INITIAL 5K
               NEXT 5
               MINEXTENTS 5
               MAXEXTENTS 100);


CREATE TRIGGER st_customer_trg BEFORE INSERT OR UPDATE ON st_customer
       FOR EACH ROW
       BEGIN
               IF :old.customer_insert_user IS NULL THEN
                       :new.customer_insert_user := USER;
                       :new.customer_insert_date := SYSDATE;
                       :new.customer_update_user := NULL;
                       :new.customer_update_date := NULL;
               ELSE
                       :new.customer_insert_user := :old.customer_insert_user;
                       :new.customer_insert_date := :old.customer_insert_date;
                       :new.customer_update_user := USER;
                       :new.customer_update_date := SYSDATE;
               END IF;
       END;
/

ALTER TABLE st_inventory      ADD CONSTRAINT fk_inv_customer_id FOREIGN KEY
    (inv_sale_customer_id)
                              REFERENCES sales_tracking.st_customer(customer_id);
CREATE TABLE st_parts
       (part_inv_id           NUMBER(6)      CONSTRAINT fk_part_inv_id
                                             REFERENCES st_inventory (inv_id),
        part_vendor_id          NUMBER(6)     CONSTRAINT fk_part_vendor_id
                                             REFERENCES st_vendor (vendor_id),
        part_amt              NUMBER(8,2)    NOT NULL,
        part_desc             VARCHAR2(20),
        part_date             DATE,
        part_insert_user      VARCHAR2(20),
        part_insert_date      DATE,
        part_update_user       VARCHAR2(20),
        part_update_date       DATE)
        TABLESPACE st_data02
        STORAGE (INITIAL 5K
               NEXT 5
               MINEXTENTS 5
               MAXEXTENTS 100);

CREATE TRIGGER st_parts_trg BEFORE INSERT OR UPDATE ON st_parts
       FOR EACH ROW
       BEGIN
               IF :old.part_insert_user IS NULL THEN
                       :new.part_insert_user := USER;
                       :new.part_insert_date := SYSDATE;
                       :new.part_update_user := NULL;
                       :new.part_update_date := NULL;
               ELSE
                       :new.part_insert_user := :old.part_insert_user;
                       :new.part_insert_date := :old.part_insert_date;
                       :new.part_update_user := USER;
                       :new.part_update_date := SYSDATE;
               END IF;
       END;
/


CREATE TABLE st_departments
       (dept_id               NUMBER(6),
       dept_name              VARCHAR2(20))
       TABLESPACE st_refdata01
       CACHE
       PCTFREE 1
       PCTUSED 90
       STORAGE (INITIAL 1K
               NEXT 1K
               MINEXTENTS 1
               MAXEXTENTS 100);
ALTER TABLE st_departments ADD CONSTRAINT pk_dept_id PRIMARY KEY (dept_id)
       USING INDEX TABLESPACE st_index01;


CREATE TABLE st_job_description
       (job_id               NUMBER(6),
       Job_descrition               VARCHAR2(20))
       TABLESPACE st_refdata01
       CACHE
       PCTFREE 1
       PCTUSED 90
       STORAGE (INITIAL 1K
               NEXT 1K
               MINEXTENTS 1
               MAXEXTENTS 100);

ALTER TABLE st_job_description ADD CONSTRAINT pk_job_id PRIMARY KEY (job_id)
       USING INDEX TABLESPACE st_index01;


CREATE TABLE st_staff
       (staff_id              NUMBER(6),
        staff_name            VARCHAR2(30),
        staff_street1         VARCHAR2(30),
        staff_street2         VARCHAR2(30),
        staff_city            VARCHAR2(20),
        staff_state           VARCHAR2(2),
        staff_zipcode         VARCHAR2(10),
        staff_dept_id         NUMBER(6)      NOT NULL,
        staff_job_id          NUMBER(6)      NOT NULL,
        staff_hiredate        DATE           NOT NULL,
        staff_termdate                DATE,
        staff_hourly_rate     NUMBER(6,2)    NOT NULL,
        staff_billing_rate     NUMBER(6,2)    NOT NULL,
        staff_picture         BLOB,
        staff_insert_user      VARCHAR2(20),
        staff_insert_date      DATE,
        staff_update_user      VARCHAR2(20),
        staff_update_date      DATE,
        CONSTRAINT pk_staff_id PRIMARY KEY (staff_id)
        USING INDEX TABLESPACE st_index01,
        CONSTRAINT fk_staff_dept_id FOREIGN KEY (staff_dept_id)
        REFERENCES sales_tracking.st_departments (dept_id),
        CONSTRAINT fk_staff_job_id FOREIGN KEY (staff_job_id)
        REFERENCES sales_tracking.st_job_description (job_id))
        TABLESPACE st_data01
        PCTFREE 30
        PCTUSED 50
        STORAGE (INITIAL 10K
               NEXT 10K
               MINEXTENTS 5
               MAXEXTENTS 100)
        LOB (staff_picture) STORE AS
               (TABLESPACE st_lob01
               STORAGE (INITIAL 10K
                      NEXT 10K
                      MINEXTENTS 5
                      MAXEXTENTS 100)
               CHUNK 500
               NOCACHE
               NOLOGGING);


CREATE SEQUENCE st_staff_seq
        START WITH 1
        INCREMENT BY 1
        CACHE 10;

CREATE TRIGGER st_staff_trg BEFORE INSERT OR UPDATE ON st_staff
       FOR EACH ROW
       BEGIN
               IF :old.staff_insert_user IS NULL THEN
                       :new.staff_insert_user := USER;
                       :new.staff_insert_date := SYSDATE;
                       :new.staff_update_user := NULL;
                       :new.staff_update_date := NULL;
               ELSE
                       :new.staff_insert_user := :old.staff_insert_user;
                       :new.staff_insert_date := :old.staff_insert_date;
                       :new.staff_update_user := USER;
                       :new.staff_update_date := SYSDATE;
               END IF;
        END;
/

CREATE TABLE st_bill_time
       (bt_staff_id           NUMBER(6),
       bt_inv_id              NUMBER(6),
       bt_date                DATE           NOT NULL,
       bt_time                NUMBER(3)      NOT NULL,
       bt_insert_user         VARCHAR2(20),
       bt_insert_date         DATE,
       bt_update_user                VARCHAR2(20),
       bt_update_date         DATE,
       CONSTRAINT fk_bt_staff_id FOREIGN KEY (bt_staff_id)
       REFERENCES sales_tracking.st_staff(staff_id),
       CONSTRAINT fk_bt_inv_id FOREIGN KEY (bt_inv_id)
       REFERENCES sales_tracking.st_inventory(inv_id))
       TABLESPACE st_data01
       PCTFREE 1
       PCTUSED 80
       STORAGE (INITIAL 10K
               NEXT 10
               MINEXTENTS 5
               MAXEXTENTS 100);

CREATE INDEX st_bt_staff_id ON st_bill_time (bt_staff_id)
       TABLESPACE st_index01
       STORAGE (INITIAL 5K
               NEXT 5K
               MINEXTENTS 5
               MAXEXTENTS 100);

CREATE INDEX st_bt_inv_id ON st_bill_time (bt_inv_id)
        TABLESPACE st_index01
        STORAGE (INITIAL 5K
               NEXT 5K
               MINEXTENTS 5
               MAXEXTENTS 100);


CREATE TRIGGER st_bill_time_trg BEFORE INSERT OR UPDATE ON st_bill_time
       FOR EACH ROW
       BEGIN
               IF :old.bt_insert_user IS NULL THEN
                       :new.bt_insert_user := USER;
                       :new.bt_insert_date := SYSDATE;
                       :new.bt_update_user := NULL;
                       :new.bt_update_date := NULL;
               ELSE
                       :new.bt_insert_user := :old.bt_insert_user;
                       :new.bt_insert_date := :old.bt_insert_date;
                       :new.bt_update_user := USER;
                       :new.bt_update_date := SYSDATE;
               END IF;
        END;
/
spool off
exit

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.141.42.116