Usar nombre de columna en procedimiento almacenado

03/07/2006 - 14:29 por Hugo Gsell | Informe spam
Hola... tengo el siguiente procedimiento almacenado... que recibe como
parametro un registro idpaso y descripción.
Al grabar el proc.. genera su propio 'nuevo número` . lo que necesito es
que si el pIdPaso que viene como parametros es distinto que el nuevo valor
generado en la linea INSERT INTO Pasos SELECT ISNULL(MAX(IdPaso), 0)+1 ,
@pdescripcion FROM Pasos me devuelva este nuevo valor en la variable
de retorno @NROFILA

ALTER PROCEDURE [dbo].[GrabaPasos]
@pIdPaso smallint,
@pDescripcion varchar(50)--,
AS
SET nocount ON
DECLARE @error int
SET transaction isolation level SERIALIZABLE
BEGIN transaction
INSERT INTO Pasos
SELECT ISNULL(MAX(IdPaso), 0)+1 , @pdescripcion
FROM Pasos
SET @error = @@error
IF @error != 0
BEGIN
ROLLBACK TRANSACTION
RETURN -1
END
ELSE
BEGIN
IF pIdPaso != IdPaso --aca seria donde debo hacer el control
BEGIN
PRINT 'ESTO NO FUNCA'
END
END

SET @error =@@error

COMMIT TRANSACTION

RETURN @Error
 

Leer las respuestas

#1 Maxi
03/07/2006 - 14:38 | Informe spam
Hola, no te recomiendo esa manera para numerar, te paso este articulo donde
se explica otra tecnica que quizas te sienta mejor

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


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Hugo Gsell" escribió en el mensaje
news:
Hola... tengo el siguiente procedimiento almacenado... que recibe como
parametro un registro idpaso y descripción.
Al grabar el proc.. genera su propio 'nuevo número` . lo que necesito
es que si el pIdPaso que viene como parametros es distinto que el nuevo
valor generado en la linea INSERT INTO Pasos SELECT ISNULL(MAX(IdPaso),
0)+1 , @pdescripcion FROM Pasos me devuelva este nuevo valor en la
variable de retorno @NROFILA

ALTER PROCEDURE [dbo].[GrabaPasos]
@pIdPaso smallint,
@pDescripcion varchar(50)--,
AS
SET nocount ON
DECLARE @error int
SET transaction isolation level SERIALIZABLE
BEGIN transaction
INSERT INTO Pasos
SELECT ISNULL(MAX(IdPaso), 0)+1 , @pdescripcion
FROM Pasos
SET @error = @@error
IF @error != 0
BEGIN
ROLLBACK TRANSACTION
RETURN -1
END
ELSE
BEGIN
IF pIdPaso != IdPaso --aca seria donde debo hacer el control
BEGIN
PRINT 'ESTO NO FUNCA'
END
END

SET @error =@@error

COMMIT TRANSACTION

RETURN @Error

Preguntas similares