一 、 procedure和function:

  procedure和function在语法上几乎完全一样,使用上却有小小的差别,

  procedure可以单独的调用

    在命令行直接exec pro_xxx();

    在其他的存储过程中:begin     pro_xxx();   end

  function一般不在命令行调用,比较麻烦,更常见的是在查询语句

    在查询语句中使用:select  fun1() from table_name

    在其他的存储过程中:begin     fun1();   end

由此可见,procedure更适合插入,删除,修改,function更适合查询

二、动态sql语句中的需要执行的sql语句必须是标准的sql语句,不能包含oracle特有的关键字,比如into

例子:从table_name 查询allocatee_id = sales_person的数量

CREATE OR REPLACE FUNCTION "GET_DATA_NUM2" (table_name in varchar2,sales_person in varchar2)
return number
as
n_total number;
v_sql VARCHAR2(500);
begin
  v_sql := 'select count(1) from '||table_name||' where allocatee_id ='''||sales_person||'''';
  execute immediate v_sql into n_total;
  RETURN n_total;
  EXCEPTION WHEN OTHERS THEN
  return 0;
end;

注意这里的v_sql,不能写成select count(1) into ‘||n_total ||‘from '||table_name||' where allocatee_id ='''||sales_person||'''';

这种语法不符合标准的sql语句,可以编译成功,但是无法得到结果

还有注意最后的sales_person 两端的引号 ,如果变量是数字,拼接动态sql的时候是不用加引号的,但是varchar类型的变量就需要加单引号,而且需要考虑引号的转意

三:oracle的递归查询

递归查询一般用于树形结构的数据,表的两个字段互为父子关系,此时要查询某个节点及节点以下的节点,普通方法就很难实现

有如下表Tree:

现在要递归查询冶炼(id=2)的所有父节点和子节点:

SELECT * FROM tree START WITH id = 2 CONNECT BY PRIOR pid = id -- 递归查询父节点

union

SELECT * FROM tree START WITH id = 2 CONNECT BY pid = PRIOR id; -- 递归查询子节点

转自:http://blog.csdn.net/wang_yunj/article/details/51040029

参考:http://blog.csdn.net/wang_yunj/article/details/51040029

    

oracle小知识点的更多相关文章

  1. oracle小知识点16-诊断事件diagnostic events

    http://blog.itpub.net/28539951/viewspace-1983919/

  2. 【体系结构】有关Oracle SCN知识点的整理

    [体系结构]有关Oracle SCN知识点的整理 1  BLOG文档结构图   BLOG_Oracle_lhr_Oracle SCN的一点研究.pdf 2  前言部分 2.1  导读和注意事项 各位技 ...

  3. 刚接触Linux,菜鸟必备的小知识点(一)

    身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...

  4. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  5. 【转】HTML5的小知识点小集合

    html5的小知识点小集合 html5知识   1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<h ...

  6. AngularJS的小知识点

    小知识点:$scope和$rootScope (1)每次使用ngController指令,都会调用控制器的创建函数,创建出一个控制器对象. (2)每次创建一个控制器对象,AngularJS都会创建一个 ...

  7. js中关于value的一个小知识点(value既是属性也是变量)

    今天在学习input的value值时,发现这么一个小知识点,以前理解不太透彻. [1]以下这种情况是常见情况,会弹出“测试内容” <input type="button" v ...

  8. html5的小知识点小集合

      html5的小知识点小集合 html5知识   1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于< ...

  9. [BS] 小知识点总结-05

    [BS] 小知识点总结-05 1. 不论UIWindow的rootViewController是navC.tabBarC还是VC,也不管modalVC和rootVC中间隔着多少个VC,但是modal出 ...

随机推荐

  1. Qt+QGIS二次开发:读取矢量元素及其属性

    1  概述矢量图层内矢量元素组成,矢量图层的加载由驱动实现,驱动必须实现对矢量图层内元素的读写操作功能. 2 原理矢量元素包含几何和属性两部分组成.几何部分用于提供图形相关内容.属性部分提供与几何相关 ...

  2. MATLAB的两种移位运算

    MATLAB的两种移位运算: 1)circshift矩阵移位 circshift:循环移位数组 语法:B = circshift(A,shiftize) 说明: B  = circshift(A,sh ...

  3. nginx的反向代理proxy_pass指令

    1. 首先什么是代理服务器?客户机发送请求时,不会直接发送到目的主机,而是先被代理服务器收到,代理服务器收到客服机的请求后,再向目的机发出,目的机就会返回数据给客户机,在返回给客户机之前,会被代理服务 ...

  4. Qt 中一些常用类中文说明

    Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...

  5. 在Oracle中执行动态SQL的几种方法

    转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...

  6. properties中的编码如何生成:例如\u7AD9\u70B9这种。

    在eclipse中的properties中的一种编码,例如\u7AD9\u70B9,是如何自动生成的. 这种编码方式当你要增加某个字段的时候,也要相应的添加这种编码方式下的格式,具体方法如下:

  7. 同一个解决方案或有依赖关系的两个项目引用同名但不同版本的DLL

    问题描述 我们最近在使用Redis作Session的集中化,中间碰到了一个如下问题:我们有一些项目比较老,引用了NewtonJson的4.0.3.0版本的DLL,但是Redis提供的C#集成DLL引用 ...

  8. C# 泛型分组和Linq分组的异同

    没什么好说的,因为用的到,所以作个记录, 代码如下: using System; using System.Collections.Generic; using System.Linq; using ...

  9. xml解析 使用dom4j操作xml

     使用dom4j操作xml 1 导入 dom4j,的jar包   2 指定要解析的XML文件 SAXReader sr=new SAXReader(); Document document= sr.r ...

  10. 老牌阅读器nook2刷机整理

    kindle肯定是现在大多数人了解电纸书这个产品的开端,也给我留下了一段美好的回忆,不折腾,不死机,官方书城让人省心不少,不过作为半个折腾爱好者,kindle显然不符合我的理念,遂慢慢入了安卓电纸书的 ...