非业务 Oracle SQL 语句备份

1、创建一个将 Oracle 生成的 GUID 格式化为标准 GUID 的函数

CREATE OR REPLACE FUNCTION fn_normal_guid
RETURN VARCHAR2 IS
  v_guid VARCHAR2(32); -- 用于接收 Oracle 生成的 GUID
BEGIN
  -- 查询 Oracle 生成的 GUID
  SELECT SYS_GUID() INTO v_guid FROM DUAL;
  -- 将 Oracle 生成的 GUID 格式化为标准的 GUID 并返回
  RETURN SUBSTR(v_guid,1,8)||'-'||
         SUBSTR(v_guid,9,4)||'-'||
         SUBSTR(v_guid,13,4)||'-'||
         SUBSTR(v_guid,17,4)||'-'||
         SUBSTR(v_guid,21,12);
END;

2、在 PLSQL 中测试并输出语句异常的语句块

需要用的时候来这儿拷贝过去改改就行了,免得每次都要写一遍——麻烦!而且又不常用,每次写的时候总有些细节半天想不起来,太浪费时间了!

DECLARE
  res VARCHAR2(50);
BEGIN
  SELECT TO_CHAR(fn_now,'yyyy年mm月dd日') INTO res FROM DUAL;
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,64));
END;

3、在查询语句中日期的一种特殊表示方法

SELECT DATE '2017-06-20'+2 res FROM DUAL; -- res: 2017-06-22

4、利用 ROWNUM 做分组子排序

SELECT DECODE(ROWNUM-t4.min_rownum,0,t4.dept_code,NULL) dept_code,
       DECODE(ROWNUM-t4.min_rownum,0,1,ROWNUM-t4.min_rownum+1) rank,t2.staff_name
FROM(
  SELECT t1.dept_code,t1.staff_name FROM demo.t_staff t1 ORDER BY t1.dept_code,t1.staff_name
) t2, (
  SELECT t3.dept_code,MIN(ROWNUM) min_rownum FROM(
    SELECT t1.dept_code,t1.staff_name FROM demo.t_staff t1 ORDER BY t1.dept_code,t1.staff_name
  ) t3
  GROUP BY t3.dept_code
) t4
WHERE t2.dept_code=t4.dept_code;

5、持续更新中

本文链接http://www.cnblogs.com/hanzongze/p/oracle-sql-backup.html
版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!个人博客,能力有限,若有不当之处,敬请批评指正,谢谢!

原文地址:https://www.cnblogs.com/hanzongze/p/oracle-sql-backup.html