Ir para conteúdo

POWERED BY:

Arquivado

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

reyad

relativa a Stored Procedures

Recommended Posts

Hey pessoal!

 

Eu estou iniciando a aprender estruturar Stored Procedures e estou com uma dúvida como resolver um exercício, através da base de dados Northwid.

 

No primeiro exercicio pedia o seguinte:

 

1.Implemente um stored procedure que incremente o valor de um artigo até que o valor de uma dada encomenda seja superior a um valor definido. O stored procedure deve aceitar como parametro o código da encomenda e o codigo do artigo e o valor pretendido para a encomenda.

E eu fiz da seguinte forma:

 

CREATE PROCEDURE artigos @codencomenda int, @codartigo int, @valor int as

WHILE (SELECT SUM(Quantity * UnitPrice * (1-Discount))

FROM [Order Details]

WHERE (OrderID = @codencomenda)) < @valor

BEGIN

UPDATE [Order Details]

SET unitprice = unitprice + 1

WHERE (ProductID = @codartigo) AND (OrderID = @codencomenda)

 

CONTINUE

END

 

EXECUTE artigos @codencomenda = 10248, @codartigo = 11, @valor = 300

Agora não sei como fazer para o segundo exercício :unsure:

 

2.Altere o stored procedure anterior para que retorne novo valor do artigo, em vez de alterar os dados na base de dados

Alguém me pode dar uma ajuda, como posso resolver isso ?

 

Obrigado.

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

 

 

CREATE PROCEDURE artigos @codencomenda int, @codartigo int, @valor int asWHILE (SELECT SUM(Quantity * UnitPrice * (1-Discount)) FROM [Order Details] WHERE (OrderID = @codencomenda)) < @valorBEGINSELECT (unitprice + 1) as novo_valorFROM [Order Details]WHERE (ProductID = @codartigo) AND (OrderID = @codencomenda)CONTINUEEND EXECUTE artigos @codencomenda = 10248, @codartigo = 11, @valor = 300

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela ajuda :)

 

Eu testei a sua solução e ele de facto mostra o novo valor incrementado, mas só depois de fazer "Cancel Query Execution".

 

Assim ele mostra então o novo valor, mas várias vezes...

 

A que se deve isso ?

 

________________________________________________________________________________

 

 

Já agora acham que a resolução seguinte, tem algo a ver com o que é pedido ? :)

 

3.Utilizando o stored procedure anterior, crie um stored procedure que faz a actualização sempre que o valor a utilizar seja inferior a um valor especificado.

CREATE PROCEDURE actualizacao @codencomenda int, @codartigo int, @valor int as

WHILE (SELECT SUM(Quantity * UnitPrice * (1-Discount))

FROM [Order Details]

WHERE (OrderID = @codencomenda)) < @valor

BEGIN

UPDATE [Order Details]

SET UnitPrice = UnitPrice + 1

WHERE (ProductID = @codartigo) AND (OrderID = @codencomenda) AND (@valor < 200)

 

CONTINUE

END

 

EXECUTE actualizacao @codencomenda = 10248, @codartigo = 11, @valor = 35

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.