Ir para o conteúdo
ze

[SQLServer] Problema a usar os strored procedures

Mensagens Recomendadas

ze    0
ze

Ola,

estou a tentar implementar o seguinte procedimento em SQL Server

create procedure codigoPostal_obterLocalidade(
@cod4 int, @cod3 int, @localidade varchar(64) output
) as
begin
Print 'A Pesquizar Localidade'
if exists(select codpostal from codpostal c where c.cod4=@cod4 and c.cod3=@cod3)
	begin
		select @localidade = localidade from codpostal c where c.cod4=@cod4 and c.cod3=@cod3 and  idpais='PORTUGAL'
		print 'valor em @localidade ='
		print @localidade
		return (@localidade)
	end
else
	begin
		set @localidade ='ERRO NAO DEFINIDO'
		return (@localidade)
	end
end
go
;

depois para testar o procedure

declare @localidade varchar(64), @print_var varchar(64)
begin
exec codigoPostal_obterLocalidade @cod4=4200,@cod3=418, @localidade =@print_var output
print 'bye'
end;

e obtenho o seguinte erro:

A Pesquizar Localidade
valor em @localidade =
PORTO
Msg 245, Level 16, State 1, Procedure codigoPostal_obterLocalidade, Line 11
Conversion failed when converting the varchar value 'PORTO' to data type int.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitortomaz    1
vitortomaz

o parametro de output não se define com um return, apenas são permitidos valores inteiros como retorno

uma coisa são parametros de output outra coisa é o valor de retorno

da forma que tens já consegues ir buscar o valor da localidade ao parâmetro de output

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ze    0
ze

o parametro de output não se define com um return, apenas são permitidos valores inteiros como retorno

uma coisa são parametros de output outra coisa é o valor de retorno

da forma que tens já consegues ir buscar o valor da localidade ao parâmetro de output

Ola,

sou novo no SQL Server, que alterações teria que fazer para colocar o procedure a funcionar e o conseguir testar?

Ou então podias-me indicar algum site para eu ir lá aprender.

Cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitortomaz    1
vitortomaz

Ola,

sou novo no SQL Server, que alterações teria que fazer para colocar o procedure a funcionar e o conseguir testar?

Ou então podias-me indicar algum site para eu ir lá aprender.

Cumps

de modo a testar declaras uma variável, executas o procedures afectando essa variável com o valor do parâmetro de output e

depois fazes select para ver o valor retornado

DECLARE @valor varchar(64)

EXEC teste 
    @localidade = @valor OUTPUT

SELECT Localidade = @valor

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitortomaz    1
vitortomaz

tiras o return do teu SP e já deves conseguir obter a localidade

DECLARE @print_var varchar(64)

exec codigoPostal_obterLocalidade @cod4=4200,@cod3=418, @localidade = @print_var output

SELECT Localidade = @print_var

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ze    0
ze

Já esta a funcionar a parte de tirar o return é que eu nunca mais dava com ela. Muito obrigado pela tua ajuda.

Já agora tiras-me outra dúvida:

i) Neste caso o procedure retorna como que uma "tabela" sobre a qual posso fazer operações se select. certo?

ii)Se o anterior é verdadeiro, o programa (no meu caso asp.net) que vai utilizar os procedures vai ter o mesmo retorno como se estive-se a executar selects?

iii)Para o meu procedure retornar um select com varias linhas e colunas tinha que fazer como? um pequeno exemplo ajudava.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade