zoukankan      html  css  js  c++  java
  • 24SQL

    create  or  replace  function f_op (p_n1  number , p_op  varchar2 , p_n2  number )  return  number   

    as  

    begin  

         return  case  when p_op =  '+'  then p_n1 + p_n2

                     when p_op =  '-'  then p_n1 - p_n2

                     when p_op =  '*'  then p_n1 * p_n2

                     when p_op =  '/'  and p_n2<> 0  then p_n1 / p_n2

                     else  null  

                end ;

    end f_op;

    /

    create  or  replace  procedure pro_241(p1  number , p2  number , p3  number , p4  number )  as  

    r_result  number  default  0 ;

    begin  

        for r  in (

            with t_num  as  

              ( select  1  id ,p1  as n  from dual

                 union  

                 select  2  id ,p2  as n  from dual

                 union  

                 select  3  id ,p3  as n  from dual

                 union  

                 select  4  id ,p4  as n  from dual), 

               t_op  as  

              ( select  '+'  as o  from dual

                 union  

                 select  '-'  as o  from dual

                 union  

                 select  '*'  as o  from dual

                 union  

                 select  '/'  as o  from dual)

             select  distinct  

                  a.n   as a,

                  o1.o  as o1,

                  b.n   as b,

                  o2.o  as o2,

                  c.n   as c,

                  o3.o  as o3,

                  d.n   as d

               from t_num a, t_num b, t_num c, t_num d,

                  t_op  o1, t_op  o2, t_op  o3

              where a.id  not  in (b.id, c.id, d.id)

                and b.id  not  in (c.id, d.id)

                and c.id <> d.id)  loop  

           r_result := f_op(f_op(f_op(r.a,r.o1,r.b),r.o2,r.c),r.o3,r.d);

             if r_result=12  then  

           dbms_output.put_line( '((' ||r.a||r.o1||r.b|| ')' ||r.o2||r.c|| ')' ||r.o3||r.d);

             end  if ;  --((a b) c) d   

           r_result := f_op(f_op(r.a,r.o1,r.b),r.o2,f_op(r.c,r.o3,r.d));

             if r_result=12  then  

           dbms_output.put_line( '(' ||r.a||r.o1||r.b|| ')' ||r.o2|| '(' ||r.c||r.o3||r.d|| ')' );

            end  if ;  --(a b) (c d)   

        end  loop ;

    end ;

    /

    set serveroutput on;

    exec pro_241( 32 , 13 , 3 , 17 );

  • 相关阅读:
    opencv学习笔记(五)镜像对称
    opencv学习笔记(四)投影
    C++文件读写详解(ofstream,ifstream,fstream)
    C++ 提取字符串中的数字
    opencv学习笔记(三)基本数据类型
    opencv学习笔记(二)寻找轮廓
    分别心
    关于bonecp和QuerRunner
    关于AutoCommit
    一个detect问题引发的一系列思考
  • 原文地址:https://www.cnblogs.com/dyh-air/p/5908898.html
Copyright © 2011-2022 走看看