Procedimiento almacenado: parametro tipo nvarchar

01/09/2006 - 16:48 por Hugo Gsell | Informe spam
Tengo un procedimiento almacenado que recibe un parametro de entrada tipo
nvarchar y
dependiendo del mismo ejecuta una acción u otra
el problema es que no me reconoce el valor del parametro les transcribo el
procedimiento.
NOTA: Lo hago funcionar estableciendo el tamaño fijo de caracteres de
parametro... es decir, reemplazando la linea @pModo nvarchar POR @pModo
nvarchar(7)
ES DECIR, si utilizo el procedure en la definicion de pModo sin el (7) y
paso el parametro GNPASE .. NO FUNCIONA.¿Porque?

CREATE PROCEDURE RecuperaExpediente
@pModo nvarchar(7),
@pNroExpte int,
@NroRegsEncontrados smallint output
AS
SET NOCOUNT ON
DECLARE @error int
BEGIN
SET NOCOUNT ON;
IF @pModo = 'GENPASE'
BEGIN
PRINT 'ACA ESTOS INTENTANDO'
SELECT dbo.Expedientes.*, dbo.Pases.CodSector AS Expr1
FROM dbo.Expedientes INNER JOIN
dbo.Pases ON dbo.Expedientes.IdExpte =
dbo.Pases.CodExpte
WHERE (dbo.Pases.CodSector = 59)

SELECT @error = @@ERROR, @NroRegsEncontrados = @@ROWCOUNT
END
ELSE
BEGIN
PRINT 'Aca NO INTENTAMOS NAA JEJEJEJEJJ'
SELECT @error = @@ERROR, @NroRegsEncontrados = @@ROWCOUNT
SET @NroRegsEncontrados = 0
END

END
RETURN @error
GO

Hugo A. Gsell

Preguntas similare

Leer las respuestas

#6 Hugo Gsell
05/09/2006 - 12:26 | Informe spam
SI ASÍ ERA.
GRACIAS.


Hugo A. Gsell

"Alejandro Mesa" escribió en el
mensaje news:
Hugo,

Porque al no ponerle la longitud, SQL Server supone que esta es 1.

Ejemplo:

create procedure dbo.p1
@s1 varchar,
@s2 varchar(25)
as
set nocount on

select @s1, datalength(@s1)
select @s2, datalength(@s2)
go

exec dbo.p1 'Microsoft', 'Microsoft'
go

drop procedure dbo.p1
go


AMB


"Hugo Gsell" wrote:

Tengo un procedimiento almacenado que recibe un parametro de entrada tipo
nvarchar y
dependiendo del mismo ejecuta una acción u otra
el problema es que no me reconoce el valor del parametro les transcribo
el
procedimiento.
NOTA: Lo hago funcionar estableciendo el tamaño fijo de caracteres de
parametro... es decir, reemplazando la linea @pModo nvarchar POR
@pModo
nvarchar(7)
ES DECIR, si utilizo el procedure en la definicion de pModo sin el (7) y
paso el parametro GNPASE .. NO FUNCIONA.¿Porque?

CREATE PROCEDURE RecuperaExpediente
@pModo nvarchar(7),
@pNroExpte int,
@NroRegsEncontrados smallint output
AS
SET NOCOUNT ON
DECLARE @error int
BEGIN
SET NOCOUNT ON;
IF @pModo = 'GENPASE'
BEGIN
PRINT 'ACA ESTOS INTENTANDO'
SELECT dbo.Expedientes.*, dbo.Pases.CodSector AS Expr1
FROM dbo.Expedientes INNER JOIN
dbo.Pases ON dbo.Expedientes.IdExpte >> dbo.Pases.CodExpte
WHERE (dbo.Pases.CodSector = 59)

SELECT @error = @@ERROR, @NroRegsEncontrados = @@ROWCOUNT
END
ELSE
BEGIN
PRINT 'Aca NO INTENTAMOS NAA JEJEJEJEJJ'
SELECT @error = @@ERROR, @NroRegsEncontrados = @@ROWCOUNT
SET @NroRegsEncontrados = 0
END

END
RETURN @error
GO

Hugo A. Gsell



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