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!!!
Fernando /@ftremonti

Fernando /@ftremonti

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar