Ajuda com uma procedure em PL/SQL

SQL

Oracle

Banco de Dados

Stored Procedures

Oracle PL SQL

06/11/2019

Fala galerinha!

Sou novato no mundo de PL/SQL e estou com dificuldade na criação de uma procedure.

Preciso de ajuda na criação de uma procedure que receberá três valores numéricos e insira um registro na tabela abaixo:

TB_MAIORES
Colunas: Descrição:
NUMERO1 Primeiro valor
NUMERO2 Segundo valor
NUMERO3 Terceiro valor
MAIOR Maior valor entre (NUMERO1, NUMERO2 e NUMERO3)

obrigado desde já!
Renan Devenz

Renan Devenz

Curtidas 0

Respostas

Fernando Ito

Fernando Ito

06/11/2019

Renan Devenz,

Vai ser algo mais ou menos como mostrado abaixo:

SELECT
    MAX(maiorNumero) AS maiorNumero
FROM
(
    SELECT numero1 AS maiorNumero
    FROM TB_MAIORES
    
    UNION 
 
    SELECT numero2 AS maiorNumero
    FROM TB_MAIORES
    
    UNION 
 
    SELECT numero3 AS maiorNumero
    FROM TB_MAIORES
)


Espero ter ajudado!

Um abraço,
ITO
GOSTEI 0
Luiz Santos

Luiz Santos

06/11/2019

Fala galerinha!

Sou novato no mundo de PL/SQL e estou com dificuldade na criação de uma procedure.

Preciso de ajuda na criação de uma procedure que receberá três valores numéricos e insira um registro na tabela abaixo:

TB_MAIORES
Colunas: Descrição:
NUMERO1 Primeiro valor
NUMERO2 Segundo valor
NUMERO3 Terceiro valor
MAIOR Maior valor entre (NUMERO1, NUMERO2 e NUMERO3)

obrigado desde já!


Boa noite Renan.
Confesso que estou um pouco enferrujado com o ORACLE, mas acho que ficaria assim:

CREATE OR REPLACE PROCEDURE MAIOR(
	p_numero1 INT,
	p_numero2 INT,
	p_numero3 INT
) IS
DECLARE
	v_aux INT;
	
BEGIN
	v_aux := 0;
	
	IF p_numero1 >= v_aux THEN
		v_aux := p_numero1;
	
	IF p_numero2 >= v_aux THEN
		v_aux := p_numero2;
		
	IF p_numero2 >= 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


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/11/2019

veja se te ajuda:

https://www.oracle.com/technetwork/pt/articles/sql/principais-caracteristicas-database-2108383-ptb.html

GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/11/2019

desculpe. a resposta era pra outro tópico.
GOSTEI 0
Renan Devenz

Renan Devenz

06/11/2019

Renan Devenz,

Vai ser algo mais ou menos como mostrado abaixo:

SELECT
    MAX(maiorNumero) AS maiorNumero
FROM
(
    SELECT numero1 AS maiorNumero
    FROM TB_MAIORES
    
    UNION 
 
    SELECT numero2 AS maiorNumero
    FROM TB_MAIORES
    
    UNION 
 
    SELECT numero3 AS maiorNumero
    FROM TB_MAIORES
)


Espero ter ajudado!

Um abraço,
ITO



Obrigado!
A consulta funcionou, porém preciso transformar essa consulta para uma procedure, como eu faço isso?
E preciso inserir o valor maior na tabela.
GOSTEI 0
Renan Devenz

Renan Devenz

06/11/2019

Fala galerinha!

Sou novato no mundo de PL/SQL e estou com dificuldade na criação de uma procedure.

Preciso de ajuda na criação de uma procedure que receberá três valores numéricos e insira um registro na tabela abaixo:

TB_MAIORES
Colunas: Descrição:
NUMERO1 Primeiro valor
NUMERO2 Segundo valor
NUMERO3 Terceiro valor
MAIOR Maior valor entre (NUMERO1, NUMERO2 e NUMERO3)

obrigado desde já!


Boa noite Renan.
Confesso que estou um pouco enferrujado com o ORACLE, mas acho que ficaria assim:

CREATE OR REPLACE PROCEDURE MAIOR(
	p_numero1 INT,
	p_numero2 INT,
	p_numero3 INT
) IS
DECLARE
	v_aux INT;
	
BEGIN
	v_aux := 0;
	
	IF p_numero1 >= v_aux THEN
		v_aux := p_numero1;
	
	IF p_numero2 >= v_aux THEN
		v_aux := p_numero2;
		
	IF p_numero2 >= 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





Obrigado!

Testei a procedure e retornou um erro informando que não é possível fazer declaração em procedure plsql.
fiz uns ajustes, porém está ocorrendo outro erro de sintaxe.

CREATE OR REPLACE PROCEDURE SP_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 SP_MAIORES;
/
GOSTEI 0
POSTAR