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 );

24SQL的更多相关文章

  1. 30种oracle常见的等待事件说明

    1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: 当一个会话视图修改一个数据块,但这 ...

  2. Oracle常见等待事件

    1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: ·         当一个会话视图 ...

随机推荐

  1. Karma+Jasmine实现自动化单元测试

    1.Karma介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma.Karma是一个让人感到非常神秘的名字 ...

  2. UWP&WP8.1 重新绘制图片 WriteableBitmap用法 图片转byte[]数组,byte[]数组转图片

    ---恢复内容开始--- WriteableBitmap 是UWP和WP8.1绘制图片的,重组图片的最重要方法.方法较为简单,方法多样性. 通过查看文档,WriteableBitmap的继承性是    ...

  3. 最新版ssh hibernate spring struts2环境搭建

    最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...

  4. 用android去写一个小程序

    前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云    共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...

  5. WebForm Repeater: 重复器

    Repeater控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行.             Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式. ...

  6. HTML5Canvas标签(https://developer.mozilla.org)

  7. Android 回调接口是啥,回调机制详解(zhuan)

    回调函数http://blog.csdn.net/a78270528/article/details/46918601 Android框架 android frame work: http://blo ...

  8. DB2 常用命令小结

    . 打开命令行窗口 #db2cmd . 打开控制中心 # db2cmd db2cc . 打开命令编辑器 db2cmd db2ce =====操作数据库命令===== . 启动数据库实例 #db2sta ...

  9. app推送中的通知和消息区别

    最近在做mqtt及其他消息推送的功能,推送服务挺多的,小米推,极光推,华为推,个推等,当然还有苹果的apns.感觉都差不多,尝试了apns,小米推和个推,各个厂家都提供的有sdk,demo. 关于通知 ...

  10. Java多线程学习(三)

    一.线程的异常(续) 在上一篇博文中我们提到了Thread.UncaughtExceptionHandler接口,我们在日常的编写中可以通过实现这一接口来给每一个Thread对象都附着一个异常处理器, ...