Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou com dificuldade na criação de uma procedure que receba três valores numéricos e insira um registro na tabela abaixo:
TB_MAIORES
NUMERO1 Primeiro valor
NUMERO2 Segundo valor
NUMERO3 Terceiro valor
MAIOR Maior valor entre (NUMERO1, NUMERO2 e NUMERO3)
>
22 horas atrás, Motta disse:
qual a dúvida ?
use o greatest
desenvolvi assim:
CREATE OR REPLACE PROCEDURE MAIOR(p_numero1 INT,p_numero2 INT,p_numero3 INT) ISDECLAREv_aux INT;BEGINv_aux := 0;IF p_numero1 >= v_aux THENv_aux := p_numero1;IF p_numero2 >= v_aux THENv_aux := p_numero2;IF p_numero2 >= v_aux THENv_aux := p_numero3;INSERT INTO TB_MAIORES(NUMERO1, NUMERO2, NUMERO3 ,MAIOR)VALUES(p_numero1, p_numero2, p_numero3, v_aux);END
porém está me retornando esse erro:
Line/Col: 6/1 PLS-00103: Encountered the symbol "DECLARE" when expecting one of the following: begin function pragma procedure subtype type <an identifier> <a double-quoted delimited-identifier> current cursor delete exists prior external languageO "DECLARE" é apenas para TRIGGERS ou blocos anonimos
pode suprimir para Procedures.
>
54 minutos atrás, Motta disse:
O "DECLARE" é apenas para TRIGGERS ou blocos anonimos
pode suprimir para Procedures.
Fiz algumas alterações porém continua o problema...
CREATE OR REPLACE PROCEDURE MAIORES(
p_numero1 INT,
p_numero2 INT,
p_numero3 INT
) IS
v_aux TB_MAIORES.MAIOR%TYPE;
BEGIN
IF p_numero1 >= v_aux THEN
v_aux := p_numero1;
IF p_numero2 >= v_aux THEN
v_aux := p_numero2;
IF p_numero3 >= v_aux THEN
v_aux := p_numero3;
INSERT INTO TB_MAIORES
(NUMERO1, NUMERO2, NUMERO3, MAIOR)
VALUES
(p_numero1, p_numero2, p_numero3, v_aux);
END IF;
END MAIORES;
/Qual o erro agora ?
>
4 minutos atrás, Motta disse:
Qual o erro agora ?
-
Erro(24,5): PLS-00103: Encontrado o símbolo "MAIORES" quando um dos seguintes símbolos era esperado: if
CREATE OR REPLACE PROCEDURE MAIORES(
p_numero1 INT,
p_numero2 INT,
p_numero3 INT
) IS
v_aux TB_MAIORES.MAIOR%TYPE;
BEGIN
IF p_numero1 >= v_aux THEN
v_aux := p_numero1;
END IF;/*todo if tem de ter end if*/
IF p_numero2 >= v_aux THEN
v_aux := p_numero2;
END IF;/*todo if tem de ter end if*/
IF p_numero3 >= v_aux THEN
v_aux := p_numero3;
END IF;/*todo if tem de ter end if*/
INSERT INTO TB_MAIORES
(NUMERO1, NUMERO2, NUMERO3, MAIOR)
VALUES
(p_numero1, p_numero2, p_numero3, v_aux);>
1 hora atrás, Motta disse:
CREATE OR REPLACE PROCEDURE MAIORES(
p_numero1 INT,
p_numero2 INT,
p_numero3 INT
) IS
v_aux TB_MAIORES.MAIOR%TYPE;
BEGIN
IF p_numero1 >= v_aux THEN
v_aux := p_numero1;
END IF;/*todo if tem de ter end if*/
IF p_numero2 >= v_aux THEN
v_aux := p_numero2;
END IF;/*todo if tem de ter end if*/
IF p_numero3 >= v_aux THEN
v_aux := p_numero3;
END IF;/*todo if tem de ter end if*/
INSERT INTO TB_MAIORES
(NUMERO1, NUMERO2, NUMERO3, MAIOR)
VALUES
(p_numero1, p_numero2, p_numero3, v_aux);Obrigado Motta! ajustei o END IF correspondente a cada IF e consegui criar a procedure, no entanto, ao executar a procedure colocando os parâmetros do INSERT, não está inserindo corretamente, chega a compilar a proc mas consulto na tabela e não retorna os dados que foram inseridos.
tem ideia do que pode ser?
Coloca um commit no fim da rotina , pode ser isto.
Deu certo Motta!
agradeço a ajuda
>
19 horas atrás, Motta disse:
Coloca um commit no fim da rotina , pode ser isto.
Deu certo Motta!
Agradeço a ajuda!
qual a dúvida ?
use o greatest