CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name [parameter_lister] declaration_section BEGIN executable_section [EXCEPTION exception_section] END [procedure_name] |
CREATE [ OR REPLACE] FINCTION [schema.]function_name [parameter_list] RETURN returning_datatype declaration_section BEGIN executable_section [EXCEPTION] exception_section END [procedure_name] |
CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER) RETURN NUMBER IS pi NUMBER=ACOS(-1); RadiansPerDegree NUMBER; BEGIN RadiansPerDegree=pi/180; RETURN(SIN(DegreesIn*RadiansPerDegree)); END |
包
包是一种将过程、函数和数据结构捆绑在一起的容器;包由两个部分组成:外部可视包规范,包括函数头,过程头,和外部可视数据结构;另一部分是包主体(package body),包主体包含了所有被捆绑的过程和函数的声明、执行、异常处理部分。
打包的PL/SQL程序和没有打包的有很大的差异,包数据在用户的整个会话期间都一直存在,当用户获得包的执行授权时,就等于获得包规范中的所有程序和数据结构的权限。但不能只对包中的某一个函数或过程进行授权。包可以重载过程和函数,在包内可以用同一个名字声明多个程序,在运行时根据参数的数目和数据类型调用正确的程序。
创建包必须首先创建包规范,创建包规范的语法如下:
CREATE [OR REPLACE] PACKAGE package_name public_variable_declarations | public_type_declarations | public_exception_declarations | public_cursor_declarations | function_declarations | procedure_specifications END [package_name] |
CREATE [OR REPLACE] PACKAGE BODY package_name private_variable_declarations | private_type_declarations | private_exception_declarations | private_cursor_declarations | function_declarations | procedure_specifications END [package_name] |
事件 | 触发器描述 |
INSERT | 当向表或视图插入一行时触发触发器 |
UPDATE | 更新表或视图中的某一行时触发触发器 |
DELETE | 从表或视图中删除某一行时触发触发器 |
CREATE | 当使用CREATE语句为数据库或项目增加一个对象时触发触发器 |
ALTER | 当使用ALTER语句为更改一个数据库或项目的对象时触发触发器 |
DROP | 当使用DROP语句删除一个数据库或项目的对象时触发触发器 |
START | 打开数据库时触发触发器,在事件后触发 |
SHUTDOWN | 关闭数据库时触发,事件前触发 |
LOGON | 当一个会话建立时触发,事件前触发 |
LOGOFF | 当关闭会话时触发,事件前触发 |
SERVER | 服务器错误发生时触发触发器,事件后触发 |
CREATE [OR REPLACE] TRIGGER trigger_name {before|after|instead of} event ON [FOR EACH ROW[WHEN condition]] trigger_body |
ALTER TRIGGER trigger_name ENABLE; ALTER TRIGGER trigger_name DISABLE; |
ALTER TRIGGER table_name DISABLE ALL TRIGGER; ALTER TRIGGER table_name ENABLE ALL TRIGGER; |
DROP TRIGGER trigger_name; |
视图家族(View Family) | 描述 |
COL_PRIVS | 包含了表的列权限,包括授予者、被授予者和权限 |
EXTENTS | 数据范围信息,比如数据文件,数据段名(segment_name)和大小 |
INDEXES | 索引信息,比如类型、唯一性和被涉及的表 |
IND_COLUMNS | 索引列信息,比如索引上的列的排序方式 |
OBJECTS | 对象信息,比如状态和DDL time |
ROLE_PRIVS | 角色权限,比如GRANT和ADMIN选项 |
SEGMENTS | 表和索引的数据段信息,比如tablespace和storage |
SEQUECNCES | 序列信息,比如序列的cache、cycle和ast_number |
SOURCE | 除触发器之外的所有内置过程、函数、包的源代码 |
SYNONYMS | 别名信息,比如引用的对象和数据库链接db_link |
SYS_PRIVS | 系统权限,比如grantee、privilege、admin选项 |
TAB_COLUMNS | 表和视图的列信息,包括列的数据类型 |
TAB_PRIVS | 表权限,比如授予者、被授予者和权限 |
TABLES | 表信息,比如表空间(tablespace),存储参数(storage parms)和数据行的数量 |
TRIGGERS | 触发器信息,比如类型、事件、触发体(trigger body) |
USERS | 用户信息,比如临时的和缺省的表空间 |
VIEWS | 视图信息,包括视图定义 |
VIEW NAME | 描述 |
USER_COL_PRIVS_MADE | 用户授予他人的列权限 |
USER_COL_PRIVS_RECD | 用户获得的列权限 |
USER_TAB_PRIVS_MADE | 用户授予他人的表权限 |
USER_TAB_PRIVS_RECD | 用户获得的表权限 |
SELECT 'ALTER USER'||username|| 'TEMPORARY TABLESPACE temp;' FROM DBA_USERS WHERE username<>'SYS' AND temporary_tablespace<>'TEMP'; |
ALTER USER SYSTEM TEMPORARY TABLESPACE temp; ALTER USER OUTLN TEMPORARY TABLESPACE temp; ALTER USER DBSNMP TEMPORARY TABLESPACE temp; ALTER USER SCOTT TEMPORARY TABLESPACE temp; ALTER USER DEMO TEMPORARY TABLESPACE temp; |