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

Damon4hire

Sql server stored procedures

6 mensagens neste tópico

boas pessoal

precisava de uma ajuda a criar um stored procedure que me permita introduzir dados

em 2 tabelas diferentes. O problema é que os dados de uma tabela vão depender dos

dados introduzidos na outra. As tabelas são estas:

Compras

-----------

numfactura (identity)

data

idfornecedor

ComprasDetalhes

----------------------

id (identity)

numfactura

idproduto

quantidade

A ideia é ao introduzir uma compra, um numfactura é gerado,

e com esse numero gerado posso então introduzir os dados na outra tabela.

Só não sei é como prever o numero gerado ou quantos produtos podem estar introduzidos

na mesma factura.

Uma ajuda pfv. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qd fazes o insert na primeira tabela, pds obter o campo identidade:

Através da variável:

@@Identity

ou então da função:

SCOPE_IDENTITY()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tks, ajudou.

Mas ainda tenho um problema.

Fiz isto:

create procedure novaCompra @idfornecedor int as

declare @numfactura int

insert into Compras(idfornecedor)

values(@idfornecedor)

return set @numfactura = @@IDENTITY

para testar fiz isto:

declare @number int

exec @number = novaCompra 2

insert into ComprasDetalhes(numfacturaentrada, iddvd, quantidade)

values(@number, 1, 1)

e dá-me isto:

(1 row(s) affected)

(1 row(s) affected)

Msg 547, Level 16, State 0, Line 3

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ComprasDetalhes_Compras". The conflict occurred in database "Loja", table "dbo.Compras", column 'numfacturaentrada'.

The statement has been terminated.

Não percebo..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu diria que a coluna ComprasDetalhes.numfactura está a referenciar a tabela Entradas em vez da tabela Compras.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol ya eu mudei o nome da tabela pa melhor entendimento ao explicar o conceito, e esqueci-me dakele detalhe  :).

mas é assim como está agora

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei bem o que faz o return set ... mas nos testes que fiz o resultado era sempre 0.

Substitui por return @@IDENTITY

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