当前位置:首页 » 编程语言 » oracleplsql块

oracleplsql块

发布时间: 2022-02-21 03:42:44

⑴ Oracle 11g的PLsql部分

·结果集缓存(Result Set Caching)
这一特性能大大提高很多程序的性能。在一些MIS系统或者OLAP系统中,需要使用到很多select count(*)这样的查询。在之前,我们如果要提高这样的查询的性能,可能需要使用物化视图或者查询重写的技术。在11g,我们就只需要加一个 /*+result_cache*/的提示就可以将结果集缓存住,这样就能大大提高查询性能。当然,在这种情况下,我们可能还要关心另外一个问题:完整性。因为在oracle中是通过一致性读来保证数据的完整性的。而显然,在这种新特性下,为提高性能,是从缓存中的结果集中读取数据,而不会从回滚段中读取数据的。关于这个问题,答案是完全能保证完整性。因为结果集是被独立缓存的,在查询期间,任何其他DML语句都不会影响结果集中的内容,因而可以保证数据的完整性。
·对象依赖性改进
在11g之前,如果有函数或者视图依赖于某张表,一旦这张表发生结构变化,无论是否涉及到函数或视图所依赖的属性,都会使函数或视图变为invalid。在11g中,对这种情况进行了调整:如果表改变的属性与相关的函数或视图无关,则相关对象状态不会发生变化。
·正则表达式的改进
在10g中,引入了正则表达式。这一特性大大方便了开发人员。11g,oracle再次对这一特性进行了改进。其中,增加了一个名为regexp_count的函数。另外,其他的正则表达式函数也得到了改进。
·新SQL语法 =>
我们在调用某一函数时,可以通过=>来为特定的函数参数指定数据。而在11g中,这一语法也同样可以出现在sql语句中了。例如,你可以写这样的语句:
select f(x=>6) from al;
·对TCP包(utl_tcp、utl_smtp…)支持FGAC(Fine Grained Access Control)安全控制
·增加了只读表(read-only table)
在以前,我们是通过触发器或者约束来实现对表的只读控制。11g中不需要这么麻烦了,可以直接指定表为只读表。
·触发器执行效率提高了
·内部单元内联(Intra-Unit inlining)
在C语言中,你可以通过内联函数(inline)或者宏实现使某些小的、被频繁调用的函数内联,编译后,调用内联函数的部分会编译成内联函数的函数体,因而提高函数效率。在11g的plsql中,也同样可以实现这样的内联函数了。
·设置触发器顺序
可能在一张表上存在多个触发器。在11g中,你可以指定它们的触发顺序,而不必担心顺序混乱导致数据混乱。
·混合触发器(compound trigger)
这是11g中新出现的一种触发器。她可以让你在同一触发器中同时具有申明部分、before过程部分、after each row过程部分和after过程部分。
·创建无效触发器(Disabled Trigger)
11g中,开发人员可以可以闲创建一个invalid触发器,需要时再编译她。
·在非DML语句中使用序列(sequence)
在之前版本,如果要将sequence的值赋给变量,需要通过类似以下语句实现:
select seq_x.next_val into v_x from al;
在11g中,不需要这么麻烦了,下面语句就可以实现:
v_x := seq_x.next_val;
·PLSQL_Warning
11g中。可以通过设置PLSQL_Warning=enable all,如果在when others没有错误爆出就发警告信息。
·PLSQL的可继承性
可以在oracle对象类型中通过super(和java中类似)关键字来实现继承性。
·编译速度提高
因为不再使用外部C编译器了,因此编译速度提高了。
·改进了DBMS_SQL包
其中的改进之一就是DBMS_SQL可以接收大于32k的CLOB了。另外还能支持用户自定义类型和bulk操作。
·增加了continue关键字
在PLSQL的循环语句中可以使用continue关键字了(功能和其他高级语言中的continue关键字相同)。
·新的PLSQL数据类型——simple_integer
这是一个比pls_integer效率更高的整数数据类型。

⑵ oracle的plsql块,存储过程,函数怎么写增删改查

首先在PL/SQL的左侧资源栏中展开Proceres项(图中位置1),然后再其上面的搜索框中(图中位置2)输入存过名称的关键词,按回车键搜索要调试的存过,不停的回车,直到找到想要调试的存过。

找到想要调试的存过,左键单击选中该存过(图中位置1),然后右键单击该存过,从弹出菜单中选择“Test”项(图中位置2)。

单击“Test”后,PL\SQL会打开调试界面,图中位置1的按钮就是开始调试的按钮,在调试之前要填写存过的参数,位置2就是填写参数的地方,如果有多个参数,会有多行参数框,按参数名填写相应的参数即可。

填写完参数,单击开始调试按钮后,调试的界面会发生一些变化。图中位置1的变化,说明存过已经处于执行状态,别人不能再编译或者执行。位置2的按钮就是执行按钮,单击这个按钮存过会执行完成或者遇到bug跳出,否则是不会停下来的,调试时不会用这个按钮的。位置3的按钮才是关键——单步执行,就是让代码一行一行的执行,位置4的按钮是跳出单步执行,等待下一个指令。

单击“单步执行”,存过开始单步执行。界面中每一次执行的代码会高亮显示(图中位置1),如果想要看某个变量具体的值,就在位置2的地方输入该变量名,然后变量的值会显示在位置3的地方。

调试的时候,每一次单步执行的时候要记一下执行代码的行数,图中位置3的数字就是当前执行代码的行数,就是第几行。如果过程单步执行到某行后,再单步执行的时候,存过就退出,那么错误就在该行的下一行。

代码执行到24行,在往下执行时,直接转到exception的地方,也就是异常处理的部分。

这说明我们代码中的错误在24和25行上,我们打开存过,浏览到24行和25行附近,发现25行和24行使用了两个变量,记住那两个变量。重新开始调试过程。

单步的执行时候把刚才那两个变量名填写到变量查看框,一边观察变量值变化,一边单步执行,执行到24行的时候,发现一个变量已经有值了,而另一个变量的值为null。错误原因明朗了吧?就是变量没有赋值或者初始话,给该变量赋值后存过就不报错了。

⑶ 怎么用ORACLE PLSQL匿名块调用存储过程

begin
core_acct_compare(参数1,参数2,参数3,参数4);
end;

begin ... end; 就是所谓的匿名块

⑷ oracle中plsql与sqlplus的区别是什么啊它们分别用来做什么啊

PLSQL是第三方公司为ORACLE使用人员开发的一个UI程序,好用,可以对ORACLE的性能和一些特性的东西提供了解决方案。SQLPLUS是ORACLE公司的随机安装产品,不太好用

⑸ oracle和plsql是什么关系

oracle和plsql是数据库服务系统与第三方的针对它设计的实用操作与维护软件。

存在原因:ORACLE是甲骨文软件公司设计编写的,它自带的一些操作组件并不是很友好,所以有一些组织针对它开发编写了一些实用操控软件,作为它的一些外围的辅组应用。

相关备注:PL/SQL 全称PL/SQL Developer,是Allround Automations公司开发,专门面向Oracle数据库存储程序单元的。非常多的ORACLE的布设、使用、学习人员会在Oracle的使用中用上它。

⑹ 执行一个Oracle PLSQL块,直接报ORA-24337: statement handle not prepared

ORA-24337表面上的意思是pl/sql块中的写法有问题,但如果在其他机器上执行没有问题,而在你这里有问题,因此可以判断pl/sql块本身的写法没有错误,问题估计出在你的机器上。
所以建议你按如下方向排查:
1.你使用的oracle用户是否与其他人一致,如果不一致,检查你的权限是否足够
2.如果Oracle用户一致,检查你机器的环境变量设置
查过这两点,估计问题就能解决。

⑺ oracle 存储过程执行速度与plsql块执行速度 疑问

oracle 存储过程执行速度与plsql块执行速度
你表的结果那些,还有那个字段上有没有索引,等等,都不知道,你这样贴个图出来,没有哪个晓得是什么原因

⑻ 在PlSQL中oracle匿名块怎么返回结果集

oracle里输出不是print,这个和其他有点不同

给你一个,你直接运行就好
declare
i int;
j int;
begin
j:=10;
i:=1;
while i<j
loop
dbms_output.put_line(rpad(chr(32),10-i,chr(32))||rpad('*',i*2-1,'*'));
i:=i+1;
end loop;
end;

oracle 里输出结果是用dbms_output.put_line这个方式,楼上说的是set serveroutput on是在命令行的操作下执行,用那个显示输出

输出结果集需要用到游标,到时候把游标里的内容也用dbms_output.put_line循环输出就好,如果是一个结果的话,就直接输出结果就OK

⑼ oracle 同一个程序块 在SQL DEVELOPER 里面运行没问题,但是在PLSQL developer 里面就报错

sqldeveloper没用过,但是你这样的程序在plsql上是有错的。一些格式不同造成的吧。
比如第一行新值delare,plsql中新值这两个字符肯定是不识别的。
还有end后,plsql中需要用符合/来宣告程序块结束。
然后再回车就可以执行。

热点内容
荣放哪个配置的脱困能力强 发布:2025-01-07 08:07:30 浏览:51
剑灵灵爆脚本会不会封号 发布:2025-01-07 08:00:57 浏览:343
加工中心铣平面编程 发布:2025-01-07 07:53:32 浏览:592
在c语言编译器编辑程序视频 发布:2025-01-07 07:33:22 浏览:284
不卡顿机顶盒需什么配置 发布:2025-01-07 07:33:19 浏览:778
群晖读写缓存掉电 发布:2025-01-07 07:32:42 浏览:237
玩崩坏3安卓用什么手机好 发布:2025-01-07 07:31:53 浏览:4
大数进位算法 发布:2025-01-07 07:26:23 浏览:82
一闪安卓版在哪里下 发布:2025-01-07 07:26:18 浏览:944
哈佛第三代最高配有什么配置 发布:2025-01-07 07:19:09 浏览:410