Novato necesita ayuda con SP

15/09/2004 - 18:29 por José G Alvarez | Informe spam
Escribi el siguiente Store Procedure

PROCEDURE dbo.Store_Trans_Efectivo
@pCanal int,
@pFecha smalldatetime,
@pTurno tinyint,
@pIdSubClase int,
@pMontoPagado smallmoney,
@pIdUsuario int
AS
DECLARE @vNumTicket int
DECLARE @vIdTransServer int

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

INSERT INTO mvTransacciones (
[IdTransServer],
[FechaHora],
[Canal],
[Fecha],
[Turno],
[NumTicket],
[IdSubclase],
[MontoPagado],
[IdUsuario],
[IdTipoTrans],
[StInServer])
VALUES (
@vIdTransServer,
GetDate(),
@pCanal,
@pFecha,
@pTurno,
@vNumTicket,
@pIdSubclase,
@pMontoPagado,
@pIdUsuario,
'1',
'1')
GO

Cuando la ejecuto (con el SQL Query Analyzer) me arroja el siguiente error:

"Cannot insert the value NULL into column 'NumTicket', table
'SIPDataBase.dbo.mvTransacciones'; column does not allow nulls. INSERT
fails."

Que estoy haciendo mal?

Gracias de antemano...
José G. Álvarez
Valencia - Venezuela.
 

Leer las respuestas

#1 Rubén Vigón
15/09/2004 - 18:43 | Informe spam
Estás especificando un "alias" para las columnas [MAX(NumTicket) + 1] y [MAX(IdTransServer) + 1] en lugar de almacenar éstos valores en tus variables locales @vNumTicket y @vIdTransServer; o sea, que en lugar de:

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX(IdTransServer) + 1 AS vIdTransServer FROM mvTransacciones

Haz ésto:

SELECT @vNumTicket = MAX(NumTicket) + 1, @vIdTransServer = MAX(IdTransServer) + 1 FROM mvTransacciones

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon

Preguntas similares