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出 ...
随机推荐
- ubuntu16.04node和npm卸载干净
如下命令便可以实现该目的: #apt-get 卸载 sudo apt-get remove --purge npm sudo apt-get remove --purge nodejs sudo ap ...
- ubuntu16.04安装配置nagios
参考博文:https://www.howtoing.com/ubuntu-nagios/ 该博文真实有效可供参考,按照步骤,基本可以成功 一.安装的先决条件 sudo apt-get install ...
- Qt5.9一个简单的多线程实例(类QThread)(第一种方法)
Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...
- PAT A1136 A Delayed Palindrome (20 分)——回文,大整数
Consider a positive integer N written in standard notation with k+1 digits ai as ak⋯a1a0 ...
- python基础学习第五天
li=[1,2,33,-1,'dbssd',[4,5,6],{4:'rfw',5:'re'}]del(li[1])print(li)print(type(li))#访问元素print(li[0])pr ...
- docker安装jdk8
1.下载jdk8 wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.or ...
- Python import用法
官方文档说明: Python code in one module gains access to the code in another module by the process of impor ...
- 【Codeforces 1114F】Please, another Queries on Array?
Codeforces 1114 F 题意:给你一个序列\(a_{1\dots n}\),以及\(q\)次查询,每次查询有两种格式: TOTIENT \(l\) \(r\):求出\(\phi(\Pi_{ ...
- Omi框架学习之旅 - 获取DOM节点 及原理说明
虽然绝大部分情况下,开发者不需要去查找获取DOM,但是还是有需要获取DOM的场景,所以Omi提供了方便获取DOM节点的方式. 这是官网的话,但是我一直都需要获取dom,对dom操作,所以omi提供的获 ...
- Omi框架学习之旅 - 组件 及原理说明
hello world demo看完后其实基本的写法就会了. 但是omi中的组件是神马鬼?其实我也不知道组件是啥. 百度百科是这么说的: 是对数据和方法的简单封装.es6中,一个类其实也可以做到对方法 ...