SQL - Ayuda con un SP

 
Vista:

Ayuda con un SP

Publicado por Joshua (18 intervenciones) el 07/06/2005 05:53:09
Hola
Veran tengo el siguiente problema, una de mis llaves primarias de una de mis tablas es varchar pero yo necesito que estas se incrementen por si solas ya que esta llave cuenta un una longitud de 16 digitos por lo tanto no se muy bien si existe un tipo de dato que maneje 16 digitos, entonces he creado un procedimiento almacenado para insertar los datos en dicha tabla.
Lo que yo quisiera saber si es posible que cada vez que se haga una insercion en esta tabla me leyera el ultimo dato existente en la tabla y de alli le sume 1 para que de esta forma pueda usarla sin necesitan de que el usuario lo escriba

De antemano muchas gracias y espero su respuesta.
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
sin imagen de perfil

RE:Ayuda con un SP

Publicado por Liliana (426 intervenciones) el 07/06/2005 13:57:18
Hola Joshua,
Si estás usando MS SQL Server 2000, el tipo de dato que te sirve es el bigint.

declare @a bigint
select @a = 1234567890123456
select @a

Para tu caso, podrías tener una tabla de Numeros donde tengas el último asignado y en el momento de la inserción tomar de allí el próximo.
O leer el MAX(numero) y sumar 1 antes de insertar.
Cualquiera de las dos opciones deberás manejarlas dentro de una transacción para evitar la posibilidad de repeticiones.
Liliana.
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

RE:Ayuda con un SP

Publicado por Joshua (18 intervenciones) el 08/06/2005 04:38:34
Es de mucha ayuda gracias pero mi podrias decir como asigno a una variable un select con la funcion MAX, ya que lo he hecho de la siguiente manera

<<"select max @MiVariable=id_usario from miTabla">>

y realmente no me funciono.

La primera forma me podrias dar un ejemplo un poco mas explicito soy un poco nuevo con este tipo de cosas.

GRACIAS de antemano.
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
sin imagen de perfil

RE:Ayuda con un SP

Publicado por Liliana (426 intervenciones) el 08/06/2005 13:17:33
Hola,
La asignación tiene otra sintaxis:
SELECT @variable = MAX(dato) FROM tabla

Con respecto a la pregunta de numeración incrementada, te mando parte del código de algo que tengo funcionando para que te de una idea:
La tabla Numerador tiene los ultimos valores de varias tablas, entre ellas Operaciones que es la que estoy actualizando.
Ese valor incrementado se está manteniendo en una variable, @Operacion, para ser usada en los INSERT de otras tablas.
Después de cada instrucción se hace control de errores.
Todo está dentro de una transacción para asegurar la consistencia de los datos.
Espero que te sirva para orientarte.
Liliana.

DECLARE @Operacion int
BEGIN TRAN
UPDATE Numerador SET @Operacion = Ultimo = Ultimo + 1 WHERE TABLA = 'Operaciones'
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END

-- Alta en Movimientos

INSERT Movimientos
SELECT IdArticulo, @Vendedor, @IdCliente, @Fecha, 'V', @Operacion, Cantidad, Precio
FROM @TDetalle

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END

-- Alta en Operaciones

INSERT Operaciones
SELECT @Operacion, @CPostal, @Fecha,
@IdCliente,
@Supervisor, @Vendedor, @Cobrador,
@CantCuotas, @Vto, @ImporteCuota, @ImporteTotal,
Estado = 'V'

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END

COMMIT TRAN

go
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

RE:Ayuda con un SP

Publicado por Joshua (18 intervenciones) el 09/06/2005 03:43:05
Muchisimas gracias Liliana esto me sera de mucha ayuda, gracias por tu ayuda y luego t digo como me fue con esto GRACIAS de nuevo me has salvado la vida y la de mi proyecto je =P
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