假设 我有 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 满意的话请您给精彩回答,谢谢