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

ze

[SQLServer] Problema a usar os strored procedures

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.