• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ze

[SQLServer] Problema a usar os strored procedures

7 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podias dar um exemplo de um procedure básico para eu retornar um varchar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

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