今天在调用Oracle Function遇到一个异常 ?...这是我的函数(为了再现随手写的) create or replace function test_f(id varchar2) return varchar2 is Result varchar2...MSD_PN from t_did where diddid = ID; IF MSD_PN IS NOT NULL THEN RESULT := 'ERROR:' || ID || '在系統中不存在...MSD_PN from t_did where diddid = ID; IF MSD_PN IS NOT NULL THEN RESULT := 'ERROR:' || ID || '在系統中不存在
♣ 题目部分 RAC中如何指定JOB的运行实例? ♣ 答案部分 在RAC中,可以让JOB在某个指定的实例上运行。...JOB运行的实例。...在RAC环境中,采用DBMS_JOB包可以指定JOB运行时候的实例。...FROM V$PARAMETER D WHERE D.NAME = 'BACKGROUND_DUMP_DEST')); / 3) 创建存储过程用于在指定的实例上运行程序...,首先从函数UTL_INADDR.GET_HOST_ADDRESS中获取,若是系统没有该包,则从视图VH_IPADDRESS_LHR中获取IP地址 CREATE OR REPLACE PROCEDURE
题目部分 在Oracle中,什么是闪回查询(Flashback Query)? 答案部分 闪回查询(Flashback Query)是查询过去某个时间点或某个SCN值对应的表中的数据信息。...闪回查询分为基于AS OF TIMESTAMP和基于AS OF SCN的闪回查询,如下所示: SELECT * FROM SCOTT.EMP AS OF TIMESTAMP(SYSTIMESTAMP...已用时间: 00: 00: 00.03 11:41:20 SQL> update old_t set name='lihu' where id=1; 已更新 1 行。...已用时间: 00: 00: 00.01 11:41:34 SQL> update old_t set name='lihua' where id=1; 已更新 1 行。...已用时间: 00: 00: 00.01 11:41:43 SQL> update old_t set name='lihuar' where id=1; 已更新 1 行。
♣题目部分在Oracle中,SELECT ... FOR UPDATE加的是什么锁? ♣答案部分 SELECT ... FOR UPDATE语句的语法如下: SELECT ......FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED]; 其中,这个OF子句在涉及到多个表时,具有较大作用。...“使用FOR UPDATE WAIT”子句的优点如下: ① 防止无限期地等待被锁定的行 ② 允许应用程序中对锁的等待时间进行更多的控制 ③ 对于交互式应用程序非常有用,因为这些用户不能等待不确定的时间...④ 若使用了SKIP LOCKED,则可以越过锁定的行,不会报告由wait n引发的“资源忙”异常报告 在Oracle 10g之前,SELECT ......FOR UPDATE获取的是2级TM锁,而从Oracle 10g开始,SELECT ... FOR UPDATE获取的是3级TM锁。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
PS:本博客收录自己工作中遇到学到的一些Oracle技能,有时间就更新整理一下 (1)Oracle正则匹配使用 PS:这条SQL可以通过正则匹对查询一下,表A的字段a是否有非数字的数据,有时候数据表的一些字段是...+),+号在左表示右外连接,在右表示左外连接 (7)oracle去重关键字 Oracle关键字: distinct:过滤掉多余的重复记录只保留一条 (8)Oracle不等于符号 oracle不等于有下面三种表示...函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行 ps:这个列转行函数vm_comcat()在oracle10比较稳定,到了oracle11就会出现一些不兼容的情况,...开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化 上面是开窗函数over(…)的简单介绍。...oracle开窗函数使用的话一般是和order、partition by、row_number()、rank()、dense_rank()几个函数一起使用 例子:成绩表的例子, 学号 姓名 班级 成绩
不知道有没有人注意过同样的代码是否封装在函数里,运行速度是不同的。...比如以下两个代码: 未封装在函数中的代码iteration.py: import datetime start = datetime.datetime.now() for i in range(10*...*8): pass end = datetime.datetime.now() print (end-start) 封装在函数中的def_iter.py: import datetime start...: for i in range(10**8): pass main() end = datetime.datetime.now() print (end-start) 分别运行这两段代码...在函数中时i是一个局部变量,而不在函数中时就变成了全局变量。
举例:查询emp表中的每个部门的人数?...) 窗口就是分析函数分析时要处理的数据范围,就拿sum来说,它是sum窗口中的记录而不是整个分组中的记录,因此我们在想得到某个栏位的累计值时,我们需要把窗口指定到该分组中的第一行数据到当前行, 如果你指定该窗口从该分组中的第一行到最后一行...得到最后一个记录值 11、lag() over(partition by ... order by ...) lag函数可以在一次查询中取出同一字段的前n行的数据 12、lead() over(...partition by ... order by ...) lead函数可以在一次查询中取出同一字段的后n行的值 lag(arg1,arg2,arg3) 第一个参数是列名, 第二个参数是偏移的offset...8、SQL查询正则表达式的使用 ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 select * from emp where regexp_like
今天在一个关注度颇高的技术公众号上看到一篇Oracle分析函数的文章,和我2009年写的博文很像,仔细看了一下,或许互联网上的抄袭不叫抄袭吧,愤愤然把之前的帖子翻了出来,结果还得靠申诉才能争取原创。...Oracle分析函数应该是各个数据库分析函数的鼻祖,其他数据库到目前为止支持的还不够全面和友好,Oracle分析函数不仅能够减少代码量,提升可读性,还可以解决性能问题。...SUM :该函数计算组中表达式的累积和,求值后通常用于帕累托图分析 MIN :在一个组中的数据窗口中查找表达式的最小值,配合partition和order可以进行复杂的最小值求解 MAX :在一个组中的数据窗口中查找表达式的最大值...RANK :根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置 DENSE_RANK :根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置...FIRST :从DENSE_RANK返回的集合中取出排在最前面的一个值的行 LAST :从DENSE_RANK返回的集合中取出排在最后面的一个值的行 FIRST_VALUE :返回组中数据窗口的第一个值
♣ 问题 在Oracle中,如何判定实例是否运行? ♣ 答案 在启动Oracle实例之前,必须定义ORACLE_SID,Oracle根据SID的HASH值来唯一确定一个实例的地址。...当打开SQL*Plus工具,输入“sqlplus / as sysdba”以后,系统根据SID进行HASH,查找在共享内存中是否有相应的共享内存段(SHMID)存在,如果有,那么返回connected,...否则返回connect to an idle instance,这个实例名是存放在SGA中的variable size中。...通过ORADEBUG IPC可以得到variable所存放的SHM的SHMID号,在OS下使用ipcrm -m SHMID可以删掉这一段共享内存。...另外,在OS级别也可以使用sysresv命令来获取SHMID号。
题目部分 在Oracle中,什么是闪回版本查询(Flashback Version Query)?...答案部分 闪回版本查询(Flashback Version Query)是查询过去某个时间段或某个SCN段内表中数据的变化情况。闪回版本查询基于回滚(Undo)表空间中的回滚信息实现。...在闪回版本查询的目标列中,可以使用下列几个伪列返回版本信息: l VERSIONS_STARTTIME:基于时间的版本有效范围的下界; l VERSIONS_STARTSCN:基于SCN的版本有效范围的下界...闪回版本查询注意事项: ① VERSIONS子句不能用于查询的表包括外部表、临时表和固定表。 ② 不能使用VERSIONS子句查询视图。但是,在视图定义中可使用VERSIONS子句。...LHR@orclasm > UPDATE T_FVQ_20170617_LHR SET SAL=8888 WHERE EMPNO=7788; 1 row updated.
♣ 题目部分 在Oracle中,和子查询相关的查询转换有哪些?...也就是说,EXISTS子句中的子查询被展开,其中的对象与主查询中的对象直接进行半关联操作。...这里的NA,实际表示Null-Aware的意思,在11g及以后的版本中,Oracle增加了对空值敏感的反关联的支持。...因此在执行计划中,分别对两者进行了扫描(直观感觉就是对DEPT_LHR进行了两次扫描),然后再做关联查询。...DEPTNO"=10) 在这个查询中,外部对EMP_LHR表的查询要同时满足SUB1和SUB2两个子查询,而SUB1在语义上又是SUB2的子集,因此优化器将两个子查询进行了合并(只进行一次对DEPT_LHR
♣ 题目部分 在Oracle中,函数索引是什么?...♣ 答案部分 在Oracle中,有一类特殊的索引,称为函数索引(Function-Based Indexes,FBI),它基于对表中列进行计算后的结果创建索引。...函数索引在不修改应用程序的逻辑基础上提高了查询性能。如果没有函数索引,那么任何在列上执行了函数的查询都不能使用这个列的索引。当在查询中包含该函数时,数据库才会使用该函数索引。...当数据库处理INSERT和UPDATE语句时,它仍然必须计算函数才能完成对语句的处理。...② 如果被函数索引所引用的用户自定义PL/SQL函数失效了或该函数索引的属主没有了在函数索引里面使用的函数的执行权限,那么对这张表上的执行的所有的操作(例如SELECT查询、DML等)也将失败(会报错:
♣ 题目部分 在Oracle中,查询转换包含哪些类型?...♣ 答案部分 在Oracle数据库中,用户发给Oracle让其执行的目标SQL和Oracle实际执行的SQL有可能是不同的,这是因为Oracle可能会对执行的目标SQL做等价改写,即查询转换。...,它是Oracle在解析目标SQL的过程中的非常重要的一步。...启发式查询转换需要从10053事件信息中查找有关查询转换的线索,并且许多跟踪记录仅能从Oracle 11g的跟踪信息中发现。...,这也就意味着对于外部查询所在结果集的每一条记录,该子查询就会被执行多少次,这种执行方式的执行效率通常情况不会太高,尤其在子查询中包含两个或两个以上表连接时,此时做子查询展开后的执行效率往往会比走FILTER
如果用过MSSQL或者是Oracle中的窗口函数(Oracle中叫分析函数),然后再使用MySQL 8.0之前的时候,就知道需要在使用窗口函数处理逻辑的痛苦了,虽然纯SQL也能实现类似于窗口函数的功能,...在MSSQL和Oracle以及PostgreSQL都已经完整支持窗口函数的情况下,MySQL 8.0中也加入了窗口函数的功能,这一点实实在在方便了sql的编码,可以说是MySQL8.0的亮点之一。 ...对于窗口函数,比如row_number(),rank(),dense_rank(),NTILE(),PERCENT_RANK()等等,在MSSQL和Oracle以及PostgreSQL,使用的语法和表达的逻辑...这一点,几个数据库厂商做的还是比较统一的,如果熟悉任何一种关系数据中的窗口函数(分析函数),在MySQL 8.0之后就放心的用吧。 ...avg,sum等聚合函数在窗口函数中的的增强 可以在聚合函数中使用窗口功能,比如sum(amount)over(partition by user_no order by create_date)
♣ 题目部分 在Oracle中,“OR扩展”可以有查询转换吗?...from client 0 sorts (memory) 0 sorts (disk) 1 rows processed 本文选自《Oracle
一、窗口函数的概念 首先,需要认识到,窗口函数并不是只有 hive 才有的,SQL 语法标准中,就有窗口函数。 并且 mysql,oracle等数据库都实现了窗口函数。...: 1)专用窗口函数,包括后面要讲到的 rank,dense_rank,row_number 等专用窗口函数 2)聚合函数,如 sum,avg,count,max,min 等 因为窗口函数是对 where...可以看到运行结果中,还是 14 行,并且每行都有一个统计值。 聚合函数是会缩减行数的,而窗口函数则不会,就可以直观看到,截止到本行数据,统计结果是多少。...2、partition by 子句 也叫查询分区子句,将数据按照边界值分组,而over()之前的函数在每个分组内执行。...dense_rank()也是相同的值排名相同,接下来的排名不会加。不会占据排名的坑位。 6、lag函数 和 lead函数 lag()函数是在窗口内,在指定列上,取上N行的数据,并且有默认值。
【关键字】pipelined【问题描述】Oracle PL/SQL中包含pipelined函数的对象迁移到YashanDB会出现不兼容现象。...【问题原因分析】Pipelined函数是一种特殊的表函数,以流方式返回结果,这样可以边处理数据边返回结果,提高性能。...嵌套表是一组同类型的元素的集合,适用于存储分组结果或批量处理数据时,可以在 PL/SQL 中遍历和操作这些数据。...YashanDB 不支持pipelined函数,若遇到pipelined函数,可以使用嵌套表来改写。...【解决/规避方法】scss 代码解读复制代码--Oracle 示例函数CREATE OR REPLACE TYPE "T_RET_TABLE" IS TABLE OF VARCHAR2 (4000)/CREATE
♣ 题目部分 在Oracle中,模糊查询可以使用索引吗?...② 模糊查询形如“WHERE COL_NAME LIKE '%ABC';”不能使用索引,但是可以通过REVERSE函数来创建函数索引才能使用到索引。...如果字符串ABC始终从原字符串的某个固定位置出现,那么可以创建SUBSTR函数索引进行优化。 b. 如果字符串ABC始终从原字符串结尾的某个固定位置出现,那么可以创建函数组合索引进行优化。 c....如果字符串ABC在原字符串中位置不固定,那么可以通过改写SQL进行优化。改写的方法主要是通过先使用子查询查询出需要的字段,然后在外层嵌套,这样就可以使用到索引了。...'AA%') filter(REVERSE(SUBSTR("TABLE_NAME",1,LENGTH("TABLE_NAME")-4)) LIKE 'AA%') --如果字符串ABC在原字符串中位置不固定
编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。...值得一提的是:在Oracle等数据库中有窗口函数,可非常容易实现这些需求,而MySQL直到8.0版本也引入相关函数。...另外这三个函数必须要要与其搭档over()配套使用,over()中的参数常见的有两个,分别是 partition by,按某字段切分 order by,与常规order by用法一致,也区分ASC(默认...)和DESC,因为排名总得有个依据 收获 涉及到排名的问题,都可以使用窗口函数来解决。...记住rank, dense_rank, row_number排名的区别。 MySQL窗口函数
♣ 题目部分 在Oracle中,如何查询RMAN的配置信息? ♣ 答案部分 通过视图V$RMAN_CONFIGURATION可以查询其配置信息或在RMAN中使用SHOW ALL命令查看。.../oracle_bk/orclasm/%U_%d.bak' [oracle@rhel6lhr ~]$ rman target / Recovery Manager: Release 11.2.0.3.0...- Production on Mon May 22 14:14:18 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates..../oracle_bk/orclasm/ctlfile_autoback_%d_%F.bak'; CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE.../product/11.2.0/dbhome_1/dbs/snapcf_orclasm.f'; # default 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
领取专属 10元无门槛券
手把手带您无忧上云