`
jetwill
  • 浏览: 15601 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
以独立事务执行PL/SQL 为了以独立事务执行PL/SQL,要在存储程序中声明[PRAGMA AUTONOMOUS_TRANSACTION]语句。 这样就使得调用方的事务与存储程序的事务完全分离。 因此,即使调用方的事务回滚,存储程序方不受其影响。 同样,存储程序方的事务回滚,调用方也不受其影响。 create or replace procedure insert_emp (     v_emp_id in char,     v_emp_name in varchar2) as   pragma autonomous_transaction; begin   ...
PL/SQL的存储过程、函数、包等,默认以所有者的权限执行。 如果要以当前用户的权限执行的话,就要指定[AUTHID CURRENT_USER]。 示例1)以当前用户的权限执行存储过程[INSERT_DATA]。 CREATE OR REPLACE PROCEDURE INSERT_DATA (   EMP_ID IN VARCHAR2   EMP_NAME IN VARCHAR2) AUTHID CURRENT_USER AS BEGIN   INSERT INTO EMP VALUES (EMP_ID, EMP_NAME); END INSERT_DATA; / ...
在PL/SQL中,可以使用除了SUM、MAX之类的组函数以外的SQL函数。 (在PL/SQL内部的SQL语句中,仍然可以使用组函数) 此外,还可以使用PL/SQL独有的内置函数。比如错误通知函数(SQLCODE、SQLERRM)。 关于函数,请参考 SQL(DML)。 示例1)把日期数据转换为字符串数据加以显示。 declare  v_date date := sysdate;  v_str_date varchar2(8); begin  dbms_output.enable(100000);  v_str_date := to_char(v_date,'YY ...
变量名 表名.列名%TYPE;定义与表的列的类型相同的变量。好处是表的列的类型发生变更的话,PL/SQL无需变更。即使列受到NOT NULL限制,变量也不受NOT NULL限制,可以赋值为NULL。变量名 表名%ROWTYPE;%ROWTYPE定义从表中取得的记录类型(作为一个整体)。 示例1)把变量"empname"定义为表[emp]的列[emp_name]的类型。 declare empname emp.emp_name%type; : : 示例2)检索表[dept]的列[dept_id]的值为'D01'的记录。 declare -- 声明%ROWTY ...
PL/SQL中的变量和常量的定义和赋值如下: 变量 数据类型 [NOT NULL];变量的定义变量名 数据类型 := 变量名;变量定义时代入初期值常量名 CONSTANT 数据类型 := 初始化值;常量的定义 示例1)声明varchar2(10)类型的变量[empname],赋值为'名字'。 declare empname varchar2(10); degin : empname := '名字'; : end 示例2)声明varchar2(10)类型的变量[empname],赋予初始化值为'名字'。 declare empname varchar2(10) ...
PL/SQL中可以使用的运算符如下: +、-、*、/加、减、乘、除:=赋值=>结合(双竖线)连结**指数=、<、>、<=、>=、<>、!=、~=、^=、IS NULL、LIKE、BETWEEN、IN比较NOT、AND、OR逻辑非、逻辑与、逻辑或 →匿名块 →存储过程(PROCEDURE) →存储函数(FUNCTION) →存储包(PACKAGE) →触发器(TRIGGER) →PL/SQL的数据类型 →PL/SQL的运算符(计算、赋值、结合、连结、指数、比较) →PL/SQL的变量和常量 →%TYPE属性和%ROWTYPE属性 →PL/SQL的内置函数 ...
数值类型 NUMBER(p,s)与数据库的NUMBER类型相同。p是精度,最大値为38,s是规模,表示小数点之后的位数,范围是-84~127。NUMBER(p)同上BINARY_INTEGER因为对NUMBER类型的数据无法直接进行算术运算,所以必须转变为二进制类型。指定范围是 -2147483647~2147483647 。不存储在数据库中,只用于计算PLS_INTEGER基本上与BINARY_INTEGER相同。如果计算溢出,就会发生错误。如果BINARY_INTEGER溢出,就被赋值为NUMBER类型。INTEGER、DEC、INT、DECIMAL、NUMERIC、DOUBLE PRECI ...
触发器的语法 CREATE OR REPLACE TRIGGER 触发器名  { BEFORE | AFTER }  { INSERT OR UPDATE OR DELETE }  ON 表1  [ FOR EACH ROW ]  { AS | IS }   /* 声明部分 */ BEGIN   /* 可执行部分 */ EXCEPTION   /* 异常处理部分 */ END [触发器名]; 表1被更新时执行BEGIN部分的处理。 ●启动时刻   BEFORE : 表1被更新前启动触发器。   AFTER  : 表1被更新后启动触发器。 ●触发器事件语句   ...
存储包的语法 ●包规格部 CREATE OR REPLACE PACKAGE 包名 { AS | IS } 存储过程定义; 存储函数定义; 变量定义; 数据类型定义; 异常定义; 游标定义; END [ 包名 ]; ●包本体 CREATE OR REPLACE PACKAGE BODY 包名 { AS | IS } 针对包规格部の存储过程定义的程序; 针对包规格部の存储函数定义的程序; 只能在包本体内部调用的存储过程程序; 只能在包本体内部调用的存储函数程序; END [包名]; 存储包由包规格部和包本体两部分构成。 ●包规格部 定义可以从包外部或包全 ...
存储函数的语法 CREATE OR REPLACE FUNCTION 函数名 [ (参数变量1 [ IN | OUT | INT OUT ] 数据类型, : 参数变量n [ IN | OUT | INT OUT ] 数据类型) ]  RETURN 数据类型 { AS | IS } /* 声明部分 */ BEGIN /* 可执行部分 */ EXCEPTION /* 异常处理部分 */ END [ 函数名 ]; 与存储过程类似,不同之处是有返回值。 给返回值(RETURN)指定的数据类型,不可指定长度。 例) × return char(2) ○ return c ...
存储过程的语法 CREATE OR REPLACE PROCEDURE 存储过程名 [ (参数变量1 [ IN | OUT | INT OUT ] 数据类型, : 参数变量n [ IN | OUT | INT OUT ] 数据类型) ] { AS | IS } /* 声明部分 */ BEGIN /* 可执行部分 */ EXCEPTION /* 异常处理部分 */ END [ 存储过程名 ]; 与匿名块不同的是,存储过程无需DECLARE关键字。取而代之的是IS或者AS关键字。 给参数指定参数类型时,不可指定长度。 例) × param1 in char(2) ...

匿名块

匿名块的构成 DECLARE /* 声明部分 */ BEGIN /* 执行部分 */ EXCEPTION /* 异常处理部分 */ END; DECLARE 在匿名块内声明变量。 如果无需声明变量,则可以省略DECLARE。 BEGIN 编写SQL语句、控制逻辑等可执行的部分。 此部分是必需的。 EXCEPTION 为了应对程序内可能发生的异常,在此进行错误处理。 如果无需错误处理,则可以省略EXCEPTION。 END 表示匿名块的结束。 示例1 包含所有部分的匿名块 declare  dname varchar2(10); beg ...
Global site tag (gtag.js) - Google Analytics