Retorno de Stored Procedure esperado varchar e saindo int
29/11/2005
0
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.
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.
Rogeriorock
Curtir tópico
+ 0
Responder
Posts
05/12/2005
Wcrivelini
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)
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)
Responder
05/12/2005
Rogeriorock
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)