
Oralce开发
Fan_-_
菜的不行
展开
-
sql技巧-构造分组条件
with t1 as (select day, count(*) over(order by day range between current row and interval '1' day following) cnt1 from papa),t2 as(select day,cnt1,lag(cnt1) over(order by day) cnt2 fr原创 2016-06-02 21:47:58 · 1378 阅读 · 0 评论 -
函数Function
函数Function创建和使用函数1.函数基础函数是另一种存储代码,非常类似于存储过程。两者之间的重要区别是,函数是能够返回单个值的PL/SQL语句块。函数可以接收一个或者多个参数,也可以不接收参数,但是函数的可执行部分必须有一个返回子句。必须在函数的头部声明返回值的数据类型。与过程一样,函数不是独立执行的,他必须在某些上下文中才能使用。可以把函数看做是一个语句原创 2016-08-07 00:45:06 · 535 阅读 · 0 评论 -
procedure
创建过程CREATE OR REPLACE PROCEDURE name [(parameter[, parameter, ...])]AS [local declarations]BEGIN executable statements[EXCEPTION exception handlers]END [name];C原创 2016-08-07 00:46:28 · 445 阅读 · 0 评论 -
FM用法
FM经测试,FM有“双重否定为肯定”的效果,呵呵即从字符串开始到想要格式化的位置。FM出现奇数次,则表示去除空格,出现偶数次相当于没效果例:‘FMMonth,FMDay,FMYYYY’ , month出现一次则格式化,day出现两次没效果,结果为July,Monday ,2013; 'FMFMMonth,FMDay,FM原创 2016-08-07 00:46:54 · 2875 阅读 · 0 评论 -
PLS_INTEGER、BINARY_INTEGER和SIMPLE_INTEGER区别
PLS_INTEGERPLS_INTEGER数据类型保存范围-2147483648到2147483647的有符整数。这种类型的值是通过底层硬件平台的原生整数格式来表示的。设计PLS_INTEGER数据类型是为了运算速度。在oracle数据库10g以前,PLS_INTEGER是唯一的一个使用原生机器算法的整数类型。其他的所有数值烈性的数据类型都和NUMBER数原创 2016-08-07 00:49:12 · 3472 阅读 · 0 评论 -
为什么in值列表不能拼'CLARK','KING','MILLER','SCOTT'
为什么in值列表不能拼'CLARK','KING','MILLER','SCOTT'因为in('MILLER','CLARK','KING')相当于in(select ename from emp where deptno=10)select ename from emp where deptno=10;ENAME----------CLARKKINGMILLER原创 2016-08-06 22:09:33 · 474 阅读 · 0 评论 -
SQL 技巧构造分组依据
题目数据 0 0 0 1 2 3 4 4 4 5 6 7 8 需求,000为一组,123为一组,444为一组,5678为一组,请用SQL实现创建表create table pig(id number);insert into pig values(0);insert into pig values(0);insert in原创 2016-11-29 14:53:22 · 1193 阅读 · 0 评论 -
自定义函数改表关联优化一例
今天朋友丢来一个SQL,叫我帮忙优化一下.受过落总真传,我瞄了几眼就知道咋回事了SELECT ESS.PK_NO, HE.EMPID, HE.LOCAL_NAME, ESS.ITEM_NO ITEM_NO_NO, ESS.PERSON_ID, GET_DEPT_NAME(HE.DEPTNO, 'zh') DEPT_NAME,原创 2017-12-28 18:10:55 · 281 阅读 · 0 评论 -
record
记录record基于表的记录 emp%rowtype;基于游标的记录 cursor c_emp is select empno,ename from emp; rec_emp c_emp%rowtype;用户定义的recordTYPE type_name IS RECORD (field_name1 datatype1 [NOT NULL] [ := DEFAULT EXPRESSION],原创 2016-08-07 00:43:53 · 655 阅读 · 0 评论 -
本地动态sql
DECLARE sql_stmt VARCHAR2(100); plsql_block VARCHAR2(300); v_zip VARCHAR2(5) := '11106'; v_total_students NUMBER; v_new_zip VARCHAR2(5); v_student_id NUMBER := 151;BEGIN -- Create table原创 2016-08-07 00:42:48 · 853 阅读 · 0 评论 -
异常处理总结
Exception例1:zero_divide ----除数为0declare v_a number := &A; v_b number := &B; v_result number;begin v_result := v_a / v_b; dbms_output.put_line(v_result);exception when zer原创 2016-03-08 22:59:41 · 596 阅读 · 0 评论 -
FORALL全解析
FORALL语句会从PL/SQL引擎会向SQL引擎发送SQL语句,后者会向PL/SQL引擎返回结果。PL/SQL和SQL引擎之间的通信称为上下文切换。这种上下文切换存在一定的性能负载。1、FORALL语句 FORALL语句会从PL/SQL引擎向SQL引擎批量发送INSERT、UPDATE和DELETE语句,而不是每次发送一条语句。例如,考虑下面的数值型FOR循环会10次迭代执原创 2016-03-08 22:58:05 · 2873 阅读 · 1 评论 -
connect by rn = prior cnt + prior rn
需求我有这样一个要求:1、查询的结果按照值排序,如sql:select value from t;结果示例如下:5070901301601902、对数据进行分组。从上述数组第一个值开始,+50之内的值作为同一组值,如果超出50了,则开始一个新的分组。示例如下50 5070 5090 50130 130160 130190 1903、最终结果是统计每组的个数。结果示例转载 2016-08-06 22:08:33 · 470 阅读 · 0 评论 -
相差超过一个小时的数据
需求create table test_1 as select 'w' cid,'a' sid ,'2016-04-17 02:25:45' dt from dualunion allselect 'w' cid,'b','2016-04-17 02:31:46' from dualunion allselect 'w' cid,'c','2016-04-17 02:35:01' fr转载 2016-08-06 22:09:03 · 360 阅读 · 0 评论 -
where in list问题
where in list问题1.使用正则var v_emp varchar2(200);exec :v_emp := 'CLARK,MILLER,KING';select * from empwhere ename in ( SELECT regexp_substr(:v_emps, '[^,]+', 1, LEVEL) AS ename FROM dual CONNECT BY LE原创 2016-08-07 00:37:13 · 1260 阅读 · 0 评论 -
ref cursor sys_refcursor传递结果集
SQL> set linesize 200 pages 100SQL> variable v refcursor;SQL> exec open :v for 'select * from emp';PL/SQL procedure successfully completed.SQL> print :v; EMPNO ENAME JOB MGR HIRE原创 2016-08-07 00:38:04 · 2477 阅读 · 0 评论 -
批量游标常用套路
declare cursor cur_login is select user_id, login, login_time from user_login; type user_id_type is table of user_login.user_id%type; type login_type is table of user_login.login%type; type log原创 2016-08-07 00:38:53 · 2521 阅读 · 0 评论 -
Ref Cursor / sys_refcursor
REF CURSOROPEN-FOR、FETCH和CLOSE语句被用于处理多行查询或者游标。这个概念非常类似于静态的游标处理。对于静态游标,首先把游标变量与查询建立关联。接下来,打开游标变量,以便于指向结果集的第一行数据。然后,从结果集中每次检索一行数据。最后,当处理完所有数据行是,关闭游标对于动态SQL,OPEN-FOR语句有个可选的USING子句,使用它可以在运行时原创 2016-08-07 00:39:47 · 972 阅读 · 0 评论 -
nlssort NLS_SORT 按笔画,拼音,部首排序
按拼音排序 select * from emp order by nlssort(ename,'NLS_SORT= SCHINESE_PINYIN_M'); SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序SC转载 2016-08-07 00:50:33 · 942 阅读 · 0 评论