![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pl/sql
文章平均质量分 55
bayueguihuaxiang
这个作者很懒,什么都没留下…
展开
-
失效的程序单元的重新编译
一、运行时自动重新编译 当用户连接数据库并执行(直接或者间接)一个失效的程序单元时,数据库自动尝试重新编译。二、手工重编译 alter 。。。compile 【reuse settings】 如果执行包的重编译,可以使用: alter package name compile body 平【reuse settings】三、模式级别重编译 1、u原创 2012-02-28 03:25:28 · 557 阅读 · 1 评论 -
可移植表空间
一、选择可移植表空间 要想移植表空间,该表空间必须是自包含的。 使用下列方法查看表空间是否为自包含 begin dbms_tts.transpoort_set_check('TABLESPACE_NAME',true); end; 如果没有返回错误,则表空间为自包含的。 当然如果表空间是非自包含的,也可以在导出时使用命令行参数transport_full_原创 2012-04-10 22:42:15 · 660 阅读 · 0 评论 -
创建DML触发器
创建DML触发器 create or replace trigger trigger_name before | after --指定触发器在出发时间之前还是之后触发 insert on scott.table_name原创 2012-03-30 18:40:23 · 926 阅读 · 0 评论 -
DML复合触发器
将行级和语句级触发器放在一个触发器中,即为复合触发器比如:create or replace trigger trigger_namefor insert or update on scott.deptcompound triggerv_var number(2):=1; before statement isbegindbms_output.put_line(原创 2012-04-10 22:40:10 · 1039 阅读 · 0 评论 -
包的串行化
默认情况下,包具有会话持续性(或者直到包被重新编译),包的这种特性可能会带来一些问题: 1、导致无法预料的错误,比如使用包中的游标而未关闭,这样再以后程序中打开这个游标时会出现‘游标已经打开’的错误。 2、可能占用大量内存。 使用包的串行化:把包状态的声明周期从会话减少到一个程序的调用。 如何使用包的串行化?在包规范和包体中同时使用serially_reusable。原创 2012-04-01 21:46:53 · 377 阅读 · 0 评论 -
pl/sql中的前置声明
前置声明 在pl/sql中必须先声明一个程序,然后才能使用这个元素。但如果程序a调用程序b,而程序b又调用程序a,那么该怎么声明呢?可以使用前置声明。也即先生命两个程序的块头部分,然后在给出模块的真正定义。前置声明可以使程序在定义之前被调用。 规则:1、不能对变量和游标进行前置声明,只针对过程和函数。 2、前置声明必须位于pl/sql块的声明部分 比如:pr原创 2012-03-30 17:12:39 · 548 阅读 · 0 评论 -
pl/sql中的局部块
局部模块局部模块:在pl/sql块(匿名或者命名块)的声明部分定义的过程或者函数。这种块只能在pl/sql块的内部被调用,不能被外部块调用。并且在定义局部块时,必须位于变量、常量、游标,异常、类型、记录等之后。比如:declare procedure proc_name (date_in in date) is begin原创 2012-03-30 17:11:50 · 385 阅读 · 0 评论 -
在oracle sql语句中调用pl/sql函数应注意的问题
用户自定义的函数要想能够在sql语句中使用,必须满足下列条件: 1、函数的所有参数必须为in模式。 2、函数的参数数据类型和返回值的数据类型必须为oracle数据库可以识别的。一些专门在pl/sql中使用的数据类型时数据库不能识别的。 3、函数必须保存在数据库中,在客户端pl/sql环境中定义的函数没有办法被sql语句调用。在sql语句中使用自定义函数的限制: 1、函数原创 2012-04-01 21:49:00 · 4977 阅读 · 0 评论 -
pl/sql模块重载
模块重载 多态:语言能够定义并且选择性的使用多个相同名称的程序中的一个的能力。 静态多态:在编译时刻决定使用哪个程序。重载即为静态多态。 动态多态:在运行时刻决定使用哪个程序。 pl/sql支持在块的声明部分,包的声明部分和包体部分,对象类型的定义中对过程和函数进行重载重载的限制: 1、重载的程序的参数中至少一个来自不同的数据类型 参数的数据类型不同但只原创 2012-03-30 17:12:10 · 805 阅读 · 0 评论 -
模块中的参数问题
一、定义参数 在模块头部定义参数 如:procedure proc_name(para_name in datatype [{:=value | default value}] [, ...]) 1、para_name为参数名 2、in 为参数模式,参数模式有in,out,in out 3、datatype为数据类型,该数据类型不受约束,也即只有数据类型的名称,不能有原创 2012-03-25 15:57:48 · 780 阅读 · 0 评论 -
过程
一般格式 create procedure schema.proc_name [(parameter [, ...])] --参数列表 [authid {definer | current_user}] --指定是使用定义者权限模型还是调用者权限模型 is [declaration] --声明部分原创 2012-03-30 17:08:55 · 248 阅读 · 0 评论 -
函数
函数的结构: function [schema.]function_name [(parameter [, ...])] --参数列表 return return_datatype --返回数据类型 [authid {definer | current_user}] --指定使用定义者权限还是调用者权限 [dete原创 2012-03-30 17:09:24 · 318 阅读 · 0 评论 -
pl/sql数据类型
一、标量数据类型 1、数值型 number,pls_integer,binary_integer,sample_integer,binary_float,binary_double,sample_float,sample_double以及子类型 2、字符型 char、varchar2、nchar、nvarchar2已经子类型 3、日期型 date、t原创 2012-02-29 09:24:11 · 328 阅读 · 0 评论 -
在pl/sql中使用警告
一、警告的分类 severe:针对不可预知的问题 informational:主要针对死代码 performance:针对影响性能的问题二、设置警告 系统级:示例:alter system set plsql_warnings='enable:severe';原创 2012-02-29 07:52:22 · 424 阅读 · 0 评论 -
oracle pl/sql编译
一、原创 2012-04-23 06:23:45 · 479 阅读 · 0 评论