Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Can this sequence be done in Oracle?
Run the script below. What it does is create a table with a sequence number by date, and a package with one external function which returns a sequential number for the date sent to it.
/*Begin script*/
CREATE TABLE test_date_seq
(
tds_date DATE NOT NULL, tds_lastnum NUMBER(12) DEFAULT 0 NOT NULL)
ALTER TABLE test_date_seq
ADD CONSTRAINT test_date_seq_pk PRIMARY KEY (tds_date)
USING INDEX
/
/* Package Spec for sequence */
CREATE OR REPLACE PACKAGE test_date_sequence IS
FUNCTION get_date_sequence (p_date IN DATE)
RETURN NUMBER;
END;
/
/* Package Body for sequence */
CREATE OR REPLACE PACKAGE BODY test_date_sequence
IS
/* Private functions + procedures */
FUNCTION date_row_exists (p_date IN DATE)
RETURN BOOLEAN; PROCEDURE insert_date_row (p_date IN DATE);
FUNCTION get_next_seq (p_date IN DATE)
RETURN NUMBER;
/* Sequence function */
FUNCTION get_date_sequence (p_date IN DATE)
RETURN NUMBER
IS
v_date DATE;
BEGIN
v_date := TRUNC (p_date, 'DDD');
IF NOT date_row_exists (v_date) THEN insert_date_row (v_date); END IF; RETURN get_next_seq (v_date);
RETURN BOOLEAN
IS
v_date_count NUMBER;
CURSOR date_row IS SELECT COUNT (*) FROM test_date_seq WHERE (tds_date = p_date); BEGIN OPEN date_row; FETCH date_row INTO v_date_count; CLOSE date_row; IF v_date_count > 0 THEN RETURN TRUE; ELSE RETURN FALSE; END IF;
INSERT INTO test_date_seq (tds_date) VALUES (p_date);
RETURN NUMBER
IS
v_sequence_number NUMBER;
CURSOR date_row IS SELECT tds_lastnum FROM test_date_seq WHERE (tds_date = p_date); BEGIN OPEN date_row; FETCH date_row INTO v_sequence_number; CLOSE date_row; v_sequence_number := v_sequence_number + 1; UPDATE tpms.test_date_seq a SET a.tds_lastnum = v_sequence_number WHERE (a.tds_date = p_date); RETURN v_sequence_number;
/*End script*/
"Nick Tentomas" <Ntentoma_at_CSBFACMGT.CSBFM.DAL.CA> wrote in message news:3ABB7204.CC5DC66F_at_CSBFACMGT.CSBFM.DAL.CA...
> Hi , > > I need to create a sequence that will reset it self every day: > > For example when it is executed for a certain data it will start from > 1..and then always add 1. > > If execute it for the day after it will start again from 1..and then > always add 1. > > I have a table where part of the key is the a date and a sequence > number. The application was created in mysql and I was created the > sequences manually there but now I am hoping to use Oracles features to > acomplish this. > > Thanks in advance, > > Nick > > >Received on Mon Mar 26 2001 - 05:45:41 CST
![]() |
![]() |