Power Builder - Ayuda con Oracle(para milson)

 
Vista:

Ayuda con Oracle(para milson)

Publicado por Manuel Ruiz (33 intervenciones) el 29/10/2002 05:44:25
Hola amigo milson, escribo para pedir un poco de ayuda con oracle, mira estoy buscando la manera de que en una tabla una de mis columnas pueda incrementarse por si sola, osea que se autoincremente, es decir que sea identity asi como en SQL 7.0, me han dicho que tengo que crear un obejeto de tipo sequencia y asociarlo a la columna que quiero que se autoincremente, pero no se como hacerlo.
Ojalá me puedas ayudar o si hay otra manera.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con Oracle(para milson)

Publicado por milson cardona (613 intervenciones) el 29/10/2002 14:50:14
Buenos dias
un saludo especial desde COLOMBIA

La información que tienes es correcta, la mejor forma de lograr lo que necesitas es con un secuencia manejada directamente por el motor, en este caso ORACLE... pero NO es que se la asignes a un campo de una tabla y listo esta automáticamente haga su trabajo, SINO que tu debes decidir cuando recuperar el valor de la secuencia y llevarselo al campo y tabla que desee, por lo general siempre será el mismo.

debes hacer 2 pasos
1- CREAR LA SECUENCIA
-vamos al SQL PLUS o al SQL WORKSHEET(recomendado) de ORACLE... aunque también te debe funcionar desde PB siempre y cuando estes conectado a una DB de ORACLE y digitamos

CREATE SEQUENCE "SCHEMA"."nombre_seq" INCREMENT BY 1 START WITH 1 MAXVALUE 99999999999999 MINVALUE 1 NOCYCLE CACHE 20 NOORDER;

donde
-SCHEMA = propietario o usuario que debe estar creado en la DB
-INCREMENT = 1 define una secuencia que se incrementa en 1 (ascendente), si quisieras descendente debes colocar -1, o si quieres que sea una secuencia que aumente 2 (=2) o (=3).
-START WITH 1 MAXVALUE =999.. MINVALUE 1: el punto de inicio y el mayor y menor valor que puede alcanzar la secuencia
- NOCYCLE :si la secuencia no es circular, CYRCLE: si desea que comience nuevamente en el menor valor cuando alcance le mayor.
-CACHE 20: para que utilice memoria cache y cuanto
-ORDER: si la secuencia debe ir ordenada NOORDER lo contrario;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Segundo paso

Publicado por milson cardona (613 intervenciones) el 29/10/2002 14:51:30

SEGUNDO PASO.
debes recuperar el valor de la secuencia y asignarselo a la columna que deseas,
DOUBLE ldbl_numero_secuencia

SELECT PROPIETARIO.nom_secuencia.NEXTVAL
INTO :ldbl_numero_secuencia
FROM SYS.DUAL
USING vble_trabsaccional;

y le llevas la variable "ldbl_numero_secuencia" al campo que desee actualizar bien sea de forma directa INSERT o UPDATE o atravez de un DW con la funcion DW_1.SETITEM(fila,columna,ldbl_numer_secuencia)

si tienes alguna duda... estoy para servirte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar