Array
(
)

Retorno de Stored Procedure esperado varchar e saindo int

Rogeriorock
   - 29 nov 2005

Oi Galera,estou começando no SQL Server por isto não reparem na pergunta,que deve ser muito facil para vc´sa.Mas vamos parar de choradeira e ir direto ao assunto.

Tenho um procedure que tem a sequinte estrutura

Create PROCEDURE Nome AS
DECLARE @variavel1 VARCHAR(5)
DECLARE @variavel12 CHAR(1)
DECLARE @variavel3 INT
DECLARE @I INT

SELECT @variavel1=RIGHT(RTRIM(CONVERT(NVARCHAR,@@IDLE)),5)
set @i=1
WHILE @I<5
BEGIN
SELECT @variavel3=CONVERT(INT,RIGHT(RTRIM(CONVERT(NVARCHAR,@@IDLE)),2))
IF (@variavel3>64 AND @variavel3<91) OR (@variavel3>97 AND @variavel3<122)
BEGIN
SET @variavel2=CHAR(@variavel3)
SET @variavel1=SUBSTRING(@variavel1,1,@I-1) + @variavel2 + SUBSTRING(@variavel1,@I+1,LEN(@variavel1))
SET @I=@I+1
END
END
return @variavel1

O resultado esta sendo o esperdo pelo que me e mostrado na tela de Erro,o meu problema e que ele dar erro por tentar converter o resultado em int,só que não e o que eu quero eu quero e varchar.Então a pergunta é ,como fazer para o retorno ser o varchar que eu quero e que ele para de tentar conver para int indevidamente.

Wcrivelini
   - 05 dez 2005

rogerio
pelo que observei, existe um problema de sintaxe na sua SP
vc não declarou sua variável como OUTPUT

(EXEMPLO:

Create PROCEDURE Nome AS
DECLARE @variavel1 VARCHAR(5) OUTPUT -- <=========
DECLARE @variavel12 CHAR(1)
DECLARE @variavel3 INT
DECLARE @I INT )

P/ capturar o resultado, qdo vc chama a procedure tem que sair algo do tipo
declare @v1 VARCHAR(50)
EXEC PROCEDURE @v1 OUTPUT

como vc tentou capturar o valor usando RETURN, servidor entendeu que vc estava tentando trazer um código de erro de execução do procedimento (por isso ele entendia que deveria ser do tipo INT)

Rogeriorock
   - 05 dez 2005

Na verdade já tinha descoberto o motivo do erro com relação a sintaxe,mas de toda forma me ajudou para saber o motivo deste retorno.mt Obrigado.