Incrementar una variable en store

07/09/2004 - 16:18 por Ana | Informe spam
Hola Amigos tengo el siguiente Store Procedure y necesito
incrementar la variable @Id_Flag ya que el select devuelve
mas de un registro

-
Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT @Id_Flag +1, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId
where Id_Denominacion „

Como puedo hacer?? porque asi como esta me genera todos
los registros que quiero insertar con el maximo mas 1
y yo quisiera que lo incremente en cada registro que
agrega...

Desde ya muchas Gracias

Ana

Preguntas similare

Leer las respuestas

#1 MAXI
07/09/2004 - 17:08 | Informe spam
Hola, yo lo intentaria hacer de otra forma eso: lo mejor seria tener una
tabla autonumeradora y generar en tu SCRIP eso.

Para ello te paso un ejemplo que es el que utilizo yo :-)

=
USE NORTHWIND

GO

IF OBJECT_ID('X_SP_FACTURAS_I') IS NOT NULL

DROP PROC X_SP_FACTURAS_I

GO

CREATE PROCEDURE X_SP_FACTURAS_I @IMPORTE FLOAT, @FECHA DATETIME,
@NUMERO_FACTURA INT OUTPUT AS

BEGIN TRAN

UPDATE NUMERADORES SET @NUMERO_FACTURA = ULTIMO_VALOR = ULTIMO_VALOR + 1
WHERE TABLA='FACTURAS'


IF @@ERROR <> 0

BEGIN

ROLLBACK TRAN

RETURN

END

INSERT INTO FACTURAS VALUES
(@NUMERO_FACTURA,CONVERT(CHAR(10),@FECHA,112),@IMPORTE)

IF @@ERROR <> 0

BEGIN

ROLLBACK TRAN

RETURN

END

COMMIT TRAN

GO

DECLARE @SALIDA INT

EXEC X_SP_FACTURAS_I @FECHA='20040101',@IMPORTE=1, @NUMERO_FACTURA=@SALIDA
OUTPUT


SELECT @SALIDA

==
Ahora, te esta haciendo que todos sean el maximo mas 1 porque le estas
haciendo un select completo a la tabla, esto es necesario?

Esto es como duplicar los registros, porque no me explicas que buscas mas en
detalle, puede ser?






Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar
Msn Messager:

"Ana" escribió en el mensaje
news:092301c494e5$8270f900$
Hola Amigos tengo el siguiente Store Procedure y necesito
incrementar la variable @Id_Flag ya que el select devuelve
mas de un registro

-
Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT @Id_Flag +1, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId
where Id_Denominacion „

Como puedo hacer?? porque asi como esta me genera todos
los registros que quiero insertar con el maximo mas 1
y yo quisiera que lo incremente en cada registro que
agrega...

Desde ya muchas Gracias

Ana
Respuesta Responder a este mensaje
#2 Lázaro
07/09/2004 - 17:22 | Informe spam
Mira este artículo a ver si te da alguna pista:

http://www.microsoft.com/spanish/ms...art167.asp

Salu2

"Ana" wrote in message
news:092301c494e5$8270f900$
Hola Amigos tengo el siguiente Store Procedure y necesito
incrementar la variable @Id_Flag ya que el select devuelve
mas de un registro

-
Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT @Id_Flag +1, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId
where Id_Denominacion „

Como puedo hacer?? porque asi como esta me genera todos
los registros que quiero insertar con el maximo mas 1
y yo quisiera que lo incremente en cada registro que
agrega...

Desde ya muchas Gracias

Ana
Respuesta Responder a este mensaje
#3 Ana
07/09/2004 - 17:48 | Informe spam
Bien!! Maxi ... voy a probar
espero con esoto solucionarlo

ocurre que el diseño de la tabla lo hizo otra persona y
que no se porque razon no definio esa tabla como
autornumerico..
Hola, yo lo intentaria hacer de otra forma eso: lo mejor


seria tener una
tabla autonumeradora y generar en tu SCRIP eso.

Para ello te paso un ejemplo que es el que utilizo yo :-)

=>
USE NORTHWIND

GO

IF OBJECT_ID('X_SP_FACTURAS_I') IS NOT NULL

DROP PROC X_SP_FACTURAS_I

GO

CREATE PROCEDURE X_SP_FACTURAS_I @IMPORTE FLOAT, @FECHA


DATETIME,
@NUMERO_FACTURA INT OUTPUT AS

BEGIN TRAN

UPDATE NUMERADORES SET @NUMERO_FACTURA = ULTIMO_VALOR =


ULTIMO_VALOR + 1
WHERE TABLA='FACTURAS'


IF @@ERROR <> 0

BEGIN

ROLLBACK TRAN

RETURN

END

INSERT INTO FACTURAS VALUES
(@NUMERO_FACTURA,CONVERT(CHAR(10),@FECHA,112),@IMPORTE)

IF @@ERROR <> 0

BEGIN

ROLLBACK TRAN

RETURN

END

COMMIT TRAN

GO

DECLARE @SALIDA INT

EXEC X_SP_FACTURAS_I @FECHA='20040101',@IMPORTE=1,


@NUMERO_FACTURA=@SALIDA
OUTPUT


SELECT @SALIDA

=>
Ahora, te esta haciendo que todos sean el maximo mas 1


porque le estas
haciendo un select completo a la tabla, esto es necesario?

Esto es como duplicar los registros, porque no me


explicas que buscas mas en
detalle, puede ser?






Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar
Msn Messager:

"Ana" escribió en


el mensaje
news:092301c494e5$8270f900$
Hola Amigos tengo el siguiente Store Procedure y




necesito
incrementar la variable @Id_Flag ya que el select




devuelve
mas de un registro

Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT @Id_Flag +1, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId
where Id_Denominacion „


Como puedo hacer?? porque asi como esta me genera todos
los registros que quiero insertar con el maximo mas 1
y yo quisiera que lo incremente en cada registro que
agrega...

Desde ya muchas Gracias

Ana




.

Respuesta Responder a este mensaje
#4 Anonimo
07/09/2004 - 17:52 | Informe spam
voy a probar!
No se si esto funcionaria ya que no lo probe pero


quizas

Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT IDENTITY(int,@Id_Flag, 1) AS id, Precedencia,


VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId where


Id_Denominacion „

Para mas informacion ve en los books online la funcion


IDENTITY
Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Ana" wrote in


message
news:092301c494e5$8270f900$
Hola Amigos tengo el siguiente Store Procedure y




necesito
incrementar la variable @Id_Flag ya que el select




devuelve
mas de un registro

Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT @Id_Flag +1, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId
where Id_Denominacion „


Como puedo hacer?? porque asi como esta me genera todos
los registros que quiero insertar con el maximo mas 1
y yo quisiera que lo incremente en cada registro que
agrega...

Desde ya muchas Gracias

Ana




.

Respuesta Responder a este mensaje
#5 Adrian D. Garcia
07/09/2004 - 21:11 | Informe spam
No se si esto funcionaria ya que no lo probe pero quizas

Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT IDENTITY(int,@Id_Flag, 1) AS id, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId where Id_Denominacion „

Para mas informacion ve en los books online la funcion IDENTITY
Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Ana" wrote in message
news:092301c494e5$8270f900$
Hola Amigos tengo el siguiente Store Procedure y necesito
incrementar la variable @Id_Flag ya que el select devuelve
mas de un registro

-
Declare @Id_Flag int
Select @Id_Flag = Max(Id_Flag) From FlagsxId

INSERT INTO FlagsxId(Id_Flaf Precedencia, VinfHombre,
VsupHombre, VInfMujer, VSupMujer, Id_Denominacion)
SELECT @Id_Flag +1, Precedencia, VinfHombre, VsupHombre,
VInfMujer, VSupMujer,182 From FlagsxId
where Id_Denominacion „

Como puedo hacer?? porque asi como esta me genera todos
los registros que quiero insertar con el maximo mas 1
y yo quisiera que lo incremente en cada registro que
agrega...

Desde ya muchas Gracias

Ana
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida