oracle小知识点
一 、 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小知识点的更多相关文章
- oracle小知识点16-诊断事件diagnostic events
http://blog.itpub.net/28539951/viewspace-1983919/
- 【体系结构】有关Oracle SCN知识点的整理
[体系结构]有关Oracle SCN知识点的整理 1 BLOG文档结构图 BLOG_Oracle_lhr_Oracle SCN的一点研究.pdf 2 前言部分 2.1 导读和注意事项 各位技 ...
- 刚接触Linux,菜鸟必备的小知识点(一)
身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...
- Java学习过程中的总结的小知识点(长期更新)
Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...
- 【转】HTML5的小知识点小集合
html5的小知识点小集合 html5知识 1. Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<h ...
- AngularJS的小知识点
小知识点:$scope和$rootScope (1)每次使用ngController指令,都会调用控制器的创建函数,创建出一个控制器对象. (2)每次创建一个控制器对象,AngularJS都会创建一个 ...
- js中关于value的一个小知识点(value既是属性也是变量)
今天在学习input的value值时,发现这么一个小知识点,以前理解不太透彻. [1]以下这种情况是常见情况,会弹出“测试内容” <input type="button" v ...
- html5的小知识点小集合
html5的小知识点小集合 html5知识 1. Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于< ...
- [BS] 小知识点总结-05
[BS] 小知识点总结-05 1. 不论UIWindow的rootViewController是navC.tabBarC还是VC,也不管modalVC和rootVC中间隔着多少个VC,但是modal出 ...
随机推荐
- httpclient实现的get请求及post请求
导出mven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId& ...
- 类似Visual Studio一样,使用Qt Creator管理多个项目,创建子项目
1. 简介 QtCreator是一个十分好用的跨平台IDE,由于最近需要在Windows和Mac同时写一个C++的代码,使用VS和XCode不能实现项目的统一管理(可以使用cmake来组织源码,但是每 ...
- Android学习之多触点滑动
知识点: 1.对矩阵:Matrix类熟悉,链接:https://blog.csdn.net/jdsjlzx/article/details/52741445 2.MotionEvent详解:https ...
- LOJ2803 CCC2018 平衡树 数论分块、记忆化搜索
传送门 题意差评,其实就是一个递推式:\(f_1 = 1 , f_i = \sum\limits_{j=2}^i f_{\lfloor \frac{i}{j} \rfloor}\),然后求\(f_N\ ...
- angularjs自定义指令Directive
今天学习angularjs自定义指令Directive.Directive是一个非常棒的功能.可以实现我们自义的的功能方法. 下面的例子是演示用户在文本框输入的帐号是否为管理员的帐号"Adm ...
- Ionic 部分手机升级不成功的问题
Android端的手机App发布之后的一段时间,用户反馈App无法升级的情况. 原因分析: 对代码进行错误在线,提示是FileNOTFindException错误,确定是下载的时候保存的目的路径 不存 ...
- jQuery checkbox全选 和全部取消
1.chkAll选中,全部chk选中 ,chkAll取消选中,全部chk取消选中 //chkAll选中,全部chk选中 ,chkAll取消选中,全部chk取消选中 $("#chkAll&q ...
- AutoMapper自动映射
十年河东,十年河西,莫欺少年穷. 学无止境,精益求精. 不扯犊子,直接进入正题: AutoMapper自动映射常用于EF中,能很好的解决DTO和Model之间相互映射的问题.在未使用AutoMappe ...
- POJ1845
这还是一道综合了许多数论的知识点的,做完也涨了不少姿势 但还是因为约数和公式这个鬼东西去找了度娘 题意很简单,就是求\(A^B\)的约数之和\(mod\ 9901\). 但是这种题意越是简单的题目越是 ...
- python中和生成器协程相关yield from之最详最强解释,一看就懂(二)
一. 从列表中yield 语法形式:yield from <可迭代的对象实例> python中的列表是可迭代的, 如果想构造一个生成器逐一产生list中元素,按之前的yield语法,是在 ...