Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gitavares

Como criar variável dentro da Stored Procedure

Recommended Posts

oi!

 

tenho uma SP assim:

CREATE PROCEDURE ValoresAlugueis	@valor varchar(50) = NULL,	@flag  char		= NULL	AS	SELECT @condicao	IF @flag IS NULL OR @flag = '1' OR @flag = '2' OR @flag = '3'		BEGIN			PRINT 'Entre com o Flag: 1 - Cliente, 2 - Funcionário, 3 - Filial'			RETURN	END		IF @valor IS NULL		BEGIN			PRINT 'Entre com o Nome do Cliente, ou do Funcionário, ou da Filial'			RETURN	END	IF @flag = '1'		BEGIN			@condicao = 'c.edtNome'	ELSE IF @flag = '2'		BEGIN			@condicao = 'fc.edtNome'	ELSE IF @flag = '3'		BEGIN			@condicao = 'fl.edtNome'	END	SELECT cav.vlContrato as 'Valor Aluguel', c.edtNome as Cliente, fl.edtNome as Filial, fc.edtNome as Funcionário, cav.blSeguro as Seguro, 		cav.vlSeguro as 'Valor Seguro', cav.dtEntrega as 'Data Entrega', cav.dtDevolucao as 'Data Devolução'	FROM ContratoAluguel_Veiculo cav, Cliente c, Funcionario fc, Filial fl, ContratoAluguel ca	WHERE cav.codContrato = ca.codContrato 		AND ca.codCliente	 = c.codCliente 		AND ca.codFuncionario = fc.codFuncionario		AND ca.codFilial	  = ca.codFilial 		AND @condicao		 = @valor	ORDER BY cav.vlContrato DESC,		@condicao ASC,		cav.codContrato DESC

abstraiam a query. ainda vou testar. quero saber como posso usar a variável @condicao... como vocês podem ver, ela não vem por parâmetro e não vai como retorno.. Alguém sabe como declarar uma variável dentro da SP desse jeito que eu quero? ounão se pode fazer??

 

o erro que dá no Query Analyzer é (uso o SQL Server 2000):

Server: Msg 137, Level 15, State 2, Procedure ValoresAlugueis, Line 16Must declare the variable '@condicao'.Server: Msg 170, Level 15, State 1, Procedure ValoresAlugueis, Line 30Line 30: Incorrect syntax near '@condicao'.Server: Msg 170, Level 15, State 1, Procedure ValoresAlugueis, Line 33Line 33: Incorrect syntax near '@condicao'.Server: Msg 170, Level 15, State 1, Procedure ValoresAlugueis, Line 36Line 36: Incorrect syntax near '@condicao'.Server: Msg 137, Level 15, State 1, Procedure ValoresAlugueis, Line 47Must declare the variable '@condicao'.

obrigada!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Giselle,

 

é só declarar depois do AS...

 

exemplo:

CREATE PROCEDURE ValoresAlugueis	@valor varchar(50) = NULL,	@flag  char		= NULL	AS	DECLARE @condicao VARCHAR(100), @VAR2 INT, @VAR3 BIT	SELECT @condicao

bom fds

t+ http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi!!

 

quanto a declaração da variável agora funcionou ;)

mas agora tem o problema de que não consigo usar essa variável como eu quero. Na verdade não sei se isso é possível.

 

tenho essa parte do script:

IF @flag = '1'		BEGIN			@condicao = 'c.edtNome'	ELSE IF @flag = '2'		BEGIN			@condicao = 'fc.edtNome'	ELSE IF @flag = '3'		BEGIN			@condicao = 'fl.edtNome'	END

então, quero usar essa variável dentro da minha query, pra substituir esses nomes das colunas, e aparecer somente a que eu necessito. Assim:

SELECT cav.vlContrato as 'Valor Aluguel', c.edtNome as Cliente, fl.edtNome as Filial, fc.edtNome as Funcionário, cav.blSeguro as Seguro, 		cav.vlSeguro as 'Valor Seguro', cav.dtEntrega as 'Data Entrega', cav.dtDevolucao as 'Data Devolução'	FROM ContratoAluguel_Veiculo cav, Cliente c, Funcionario fc, Filial fl, ContratoAluguel ca	WHERE cav.codContrato = ca.codContrato 		AND ca.codCliente	 = c.codCliente 		AND ca.codFuncionario = fc.codFuncionario		AND ca.codFilial	  = ca.codFilial 		AND @condicao		 = @valor	ORDER BY cav.vlContrato DESC,		@condicao ASC,		cav.codContrato DESC

mas aparece o seguinte erro:

Server: Msg 170, Level 15, State 1, Procedure ValoresAlugueis, Line 31Line 31: Incorrect syntax near '@condicao'.Server: Msg 170, Level 15, State 1, Procedure ValoresAlugueis, Line 34Line 34: Incorrect syntax near '@condicao'.Server: Msg 170, Level 15, State 1, Procedure ValoresAlugueis, Line 37Line 37: Incorrect syntax near '@condicao'.Server: Msg 1008, Level 15, State 1, Procedure ValoresAlugueis, Line 50The SELECT item identified by the ORDER BY number 2 contains a variable as part of the expression identifying a column position. Variables are only allowed when ordering by an expression referencing a column name.

e agora? tem jeito? como resolvo isso?

 

obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.