Retorno de Procedure - NULL
17/11/2009
0
Galera,
Tenho esta procedure abaixo e nao esta me retornando nada...
O que pode ser?
CREATE PROCEDURE sp_ProxNumero(@Campo varchar(20), @ProxNumero varchar(20) OUTPUT ) AS begin--10:14
DECLARE @AnoStr char(4)
DECLARE @Num varchar(20)
DECLARE @n int
DECLARE @UltValor float
DECLARE @Ano smallint
DECLARE @TamCampo tinyint
DECLARE @UsaAno char(1)
DECLARE @ResultStr varchar(20)
DECLARE @AnoAtual smallint
Set @AnoAtual = DATEPART(year, GETDATE())
Select @Ano = Ano, @UsaAno = UsaAno FROM NrContr WHERE CdCampo = @Campo
IF @UsaAno = 'S' AND @AnoAtual <> @Ano
Begin
BEGIN TRAN
UPDATE NrContr SET Ano = @AnoAtual, UltValor = 0 WHERE CdCampo = @Campo
COMMIT
End
DECLARE cursor_prox CURSOR FOR SELECT UltValor, Ano, TamCampo, UsaAno FROM NrContr
WHERE CdCampo = @Campo
OPEN cursor_prox
FETCH NEXT FROM cursor_prox INTO @UltValor, @Ano, @TamCampo, @UsaAno
UPDATE NrContr SET UltValor = @UltValor + 1
WHERE CURRENT OF cursor_prox
CLOSE cursor_prox
DEALLOCATE cursor_prox
Set @AnoStr = STR(@Ano,4)
Set @Num = STR(@UltValor+1, @TamCampo)
set @n = 1
while @n <= @TamCampo
begin
if substring(@Num, @n, 1) = ' '
Set @ResultStr = @ResultStr + '0'
else
Set @ResultStr = @ResultStr + Substring(@Num, @n, 1)
Set @n = @n + 1
end
Set @Num = @ResultStr
if @UsaAno = 'S'
SELECT @ProxNumero = @AnoStr + @Num
else
SELECT @ProxNumero = @Num
end
Aih eu a chamo assim:
Declare @ProxNumero VarChar(20), @Campo VarChar(20)
Set @Campo = 'NrContrDoc'
Exec Sp_ProxNumero @Campo , @ProxNumero OutPut
Select @ProxNumero
Este campo que passo por parametro existe na tabela... normal..
Nao econtro de forma alguma o motivo...
Obrigado!!!
Tenho esta procedure abaixo e nao esta me retornando nada...
O que pode ser?
CREATE PROCEDURE sp_ProxNumero(@Campo varchar(20), @ProxNumero varchar(20) OUTPUT ) AS begin--10:14
DECLARE @AnoStr char(4)
DECLARE @Num varchar(20)
DECLARE @n int
DECLARE @UltValor float
DECLARE @Ano smallint
DECLARE @TamCampo tinyint
DECLARE @UsaAno char(1)
DECLARE @ResultStr varchar(20)
DECLARE @AnoAtual smallint
Set @AnoAtual = DATEPART(year, GETDATE())
Select @Ano = Ano, @UsaAno = UsaAno FROM NrContr WHERE CdCampo = @Campo
IF @UsaAno = 'S' AND @AnoAtual <> @Ano
Begin
BEGIN TRAN
UPDATE NrContr SET Ano = @AnoAtual, UltValor = 0 WHERE CdCampo = @Campo
COMMIT
End
DECLARE cursor_prox CURSOR FOR SELECT UltValor, Ano, TamCampo, UsaAno FROM NrContr
WHERE CdCampo = @Campo
OPEN cursor_prox
FETCH NEXT FROM cursor_prox INTO @UltValor, @Ano, @TamCampo, @UsaAno
UPDATE NrContr SET UltValor = @UltValor + 1
WHERE CURRENT OF cursor_prox
CLOSE cursor_prox
DEALLOCATE cursor_prox
Set @AnoStr = STR(@Ano,4)
Set @Num = STR(@UltValor+1, @TamCampo)
set @n = 1
while @n <= @TamCampo
begin
if substring(@Num, @n, 1) = ' '
Set @ResultStr = @ResultStr + '0'
else
Set @ResultStr = @ResultStr + Substring(@Num, @n, 1)
Set @n = @n + 1
end
Set @Num = @ResultStr
if @UsaAno = 'S'
SELECT @ProxNumero = @AnoStr + @Num
else
SELECT @ProxNumero = @Num
end
Aih eu a chamo assim:
Declare @ProxNumero VarChar(20), @Campo VarChar(20)
Set @Campo = 'NrContrDoc'
Exec Sp_ProxNumero @Campo , @ProxNumero OutPut
Select @ProxNumero
Este campo que passo por parametro existe na tabela... normal..
Nao econtro de forma alguma o motivo...
Obrigado!!!
Fernando /@ftremonti
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)