tmvolpato 21 de jun. de 2013
severuspedreirus 21 de jun. de 2013
com for nao tentei ainda, queira fazer com while, mas eu tentei e deu erro
severuspedreirus 21 de jun. de 2013
fiz com while assim:
CREATE OR REPLACE FUNCTION verifica_compra ( integer , integer , date , numeric , integer ) RETURNS VOID AS $$
DECLARE
_idCliente alias for $ 2 ;
_idProduto alias for $ 1 ;
_dataCompra alias for $ 3 ;
_valor alias for $ 4 ;
_qnt alias for $ 5 ;
idProd INTEGER ;
BEGIN
idProd := ( select idProduto from compra where idCliente = _idCliente and dataCompra = _dataCompra )
WHILE ( idProd <> 0 ) LOOP
IF (_ idProduto = idProd ) THEN
RAISE EXCEPTION ' O produto j á est á nessa compra !';
idProd := idProd + 1 ;
end if ;
END LOOP ;
INSERT INTO Compra VALUES (_ IdProduto , _idCliente , _dataCompra , _valor , _qnt );
idProd := 0 ;
END ;
$$
LANGUAGE ' plpgsql ' VOLATILE
mas retorna esse erro:
ERRO : erro de sintaxe em ou próximo a "("
LINE 15 : WHILE ( idProd <> 0 ) LOOP
^
********** Error **********
ERRO : erro de sintaxe em ou próximo a "("
SQL state : 42601
Character : 373
porque a sintaxe esta errada???
gordogranudo 21 de jun. de 2013
faltou “;” na linha 12 e acho que esse while é infinito
gordogranudo 21 de jun. de 2013
Cara fiz isso ve se funciona, to no trampo e nao tem como testar
CREATE OR REPLACE FUNCTION verifica_compra ( integer , integer , date , numeric , integer ) RETURNS VOID AS $$
DECLARE
_idCliente alias for $ 2 ;
_idProduto alias for $ 1 ;
_dataCompra alias for $ 3 ;
_valor alias for $ 4 ;
_qnt alias for $ 5 ;
idProd compra % rowtype ;
contador integer ;
BEGIN
select into _idprod * from compra ;
contador := ( select count ( datacompra ) from compra );
WHILE ( contador > 0 ) LOOP
IF ( _idProduto = _idprod . idProduto ) THEN
RAISE EXCEPTION ' O produto já está nessa compra ! ' ;
idProd := idProd + 1 ;
exit ;
end if ;
contador := contador - 1 ;
END LOOP ;
INSERT INTO Compra VALUES ( _IdProduto , _idCliente , _dataCompra , _valor , _qnt );
END $$ LANGUAGE ' plpgsql '
severuspedreirus 21 de jun. de 2013
Valeu gordogranudo , serviu sim era isso que eu tentava fazer …VALEWSS !!