oracle通过调用存储过程实现三个数的比较

兄弟哪位知道,oracle通过调用存储过程实现三个数的比较
最新回答
冷魅

2024-11-22 08:25:58

假设 我有 A B C三个数字,是number类型(字符类型也一样能比较大小,或者字符长度),根据你的需求可以具体调整.
先创建一个存储过程proc_test
create OR REPLACE PROCEDURE proc_test(A number, B number, C number) ---传入要比较的三个数
AS
BEGIN

BEGIN
/*先假设A>B,那就会有三种情况,B>C或者C>A 或者C在AB之间*/
if A > B
THEN
if B > C
THEN
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || A || '>' || B || '>' || C);
elsif C > A
THEN
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || C || '>' || A || '>' || B);
ELSE
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || A || '>' || C || '>' || B);
END if;
/*如果A>B假设不成立,那就比较A和C,同理也会有三种情况B>A为最大,B在AC之间或者B>C为最小*/
elsif A > C
THEN
if C > B
THEN
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || A || '>' || C || '>' || B);
elsif B > A
THEN
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || B || '>' || A || '>' || C);
ELSE
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || A || '>' || B || '>' || C);
END if;
ELSE
/*如果上述都不成立那A就必定<B并且<C,接下来只要判断B和C的关系,如果B>C那么就是B>C>A,如果B<C那么就是C>B>A*/
if B > C
THEN
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || B || '>' || C || '>' || A);
ELSE
DBMS_OUTPUT.PUT_LINE('比较后的结果是:' || C || '>' || B || '>' || A);
END if;
END if;
END;
---------------调用过程进行测试,经过多种情况测试,结果完全正确.
BEGIN
proc_test(11,35,23);-----任意输入三个数,运行后就出来结果
END;
比较后的结果是:35>23>11
满意的话请您给精彩回答,谢谢