
PL/SQL
事后诸葛亮
深入浅出!
展开
-
PL/SQL和T-SQL的简单区别!!!
PL/SQL和T-SQL都是扩展SQL的一种方言。PL/SQL的支持者有oracle、MySql等。T-SQL的支持者有Sql Server、Sybase等。 语法区别PL/SQL用";"分割每一條語句,T-SQL用回車分割一條語句。如ORACLE中sql语句可以用分号结尾,且不区分大小写。SQL SERVER中sql语句不能用分号结尾,且对表等区分大小写。执行查询原创 2010-08-26 14:44:00 · 4661 阅读 · 0 评论 -
PL/SQL 11g R2 —— 事务
--场景举例:公司每天下午16点结算24小时以前的销售记录,但不结算当天16点之后的记录。--只读事物可以使用户取得特定时间点的数据,但不能执行insert/update/deleteset transaction read only;exec dbms_transaction.read_only;--顺序事物可以使用户取得特定时间点的数据,并且可以执行insert/update/delete原创 2010-08-27 16:37:00 · 614 阅读 · 0 评论 -
PL/SQL 11g R2 —— 函数
--带in参数的函数create or replace function get_ename(v_empno in number)return varchar2is v_ename emp.ename%type;begin select emp.ename into v_ename from emp where emp.empno=v_empno; return v_ena原创 2010-09-02 10:11:00 · 599 阅读 · 0 评论 -
PL/SQL 11g R2 —— 包
set serveroutput on--包由包规范和包体两部分组成--包规范里面定义的对象是全局的--包体里面定义的对象是局部的--定义包规范create or replace package emp_package is --使用了重载,两个过程名相同,参数不同 procedure get_sal(v_empno in number); --全局过程 procedu原创 2010-09-02 13:37:00 · 511 阅读 · 0 评论 -
PL/SQL 11g R2 —— 存储过程
--子程序:过程和函数--带有out参数的存储过程create or replace procedure query_emp( v_empno in emp.empno%type, v_ename out emp.ename%type, v_sal out emp.sal%type) isbegin select emp.ename,emp.sal into v_ename,v_sa原创 2010-09-01 17:35:00 · 578 阅读 · 0 评论 -
PL/SQL 11g R2 —— 触发器
set serveroutput on--触发器是被隐含执行的存储过程--语句级触发器create or replace trigger bonus_triggerafter insert or update or delete on bonusbegin case when inserting then dbms_output.put_line('inserted'); w原创 2010-09-03 11:12:00 · 633 阅读 · 0 评论 -
PL/SQL 11g R2 ——动态SQL
--动态sql,使用using传入参数declare sql_stat varchar2(200);begin sql_stat:='update emp set sal=:v_sal where empno=:v_empno'; execute immediate sql_stat using &1,&2; commit;end;/set serveroutp原创 2010-09-06 10:26:00 · 737 阅读 · 0 评论 -
oracle sys_context()函数
第一个参数为'USERENV',是固定的,第二个参数也是固定的,但是是多选固定,可选的值如下所示:select sys_context('USERENV','AUTHENTICATION_TYPE') from dual;--用户的认证类型select sys_context('USERENV','AUTHENTICATION_DATA') from dual;--未知select s原创 2014-01-06 11:02:44 · 1256 阅读 · 0 评论 -
PL/SQL 11g R2 —— 复合数据类型应用
set serveroutput ondeclare --复合变量 record type emp_record_type is record( v_name emp.ename%type, v_sal emp.sal%type); emp_record emp_record_type;begin select t.ename,t.sal into emp_record from原创 2010-08-27 10:21:00 · 810 阅读 · 0 评论 -
结果缓存函数
19-5:结果缓存函数(11G新特性)#RESULT_CACHE 用于指定建立结果缓存函数,必需关键字;#RELIES_ON 指定函数结果所依赖的对象,可选关键字。#当使用RESULT_CACHE选项时,函数不能带有out或in out参数。CREATE OR REPLACE FUNCTION get_name(no VARCHAR2)RETURN NUMBER RES原创 2014-01-07 16:10:19 · 1125 阅读 · 1 评论 -
PL/SQL 11g R2 —— 游标
set serveroutput on --显示游标fetch...intodeclare cursor emp_cursor is select emp.ename,emp.sal from emp; v_ename emp.ename%type; v_sal emp.sal%type;begin open emp_cursor; loop fetch原创 2010-08-31 14:55:00 · 789 阅读 · 0 评论 -
PL/SQL 11g R2 —— PL/SQL结构控制语句 !
set serveroutput ondeclare --if语句 v_empno emp.empno%type:=&no; v_deptno emp.deptno%type;begin select emp.deptno into v_deptno from emp where emp.empno=v_empno; if v_deptno=10 then d原创 2012-02-14 15:44:43 · 631 阅读 · 0 评论 -
PL/SQL 11g R2 —— 异常处理
set serveroutput onora-06530:access_into_null 对象没有初始化ora-06592:case_not_found case语句没有匹配条件rao-06531:collection_is_null 没有初始化集合元素ora-06511:cursor_already_open 重复打开游标ora-00001:dup_val_on_index 唯一索引原创 2010-08-31 19:21:00 · 674 阅读 · 0 评论 -
PL/SQL 11g R2 —— PL/SQL程序 !
例子1:返回一行、多列记录。SQL> set serveroutput onSQL> declare 2 v_emp_hiredate employees.hire_date%type; 3 v_emp_salary employees.salary%type; 4 begin 5 select hire_date,salary into v_e原创 2012-02-14 15:38:34 · 970 阅读 · 0 评论 -
PL/SQL 11g R2 —— PL/SQL概述 !
PL/SQL 块结构:> (optional)DECLARE -- Declarative part (optional)-- Declarations of local types, variables, & subprogramsBEGIN -- Executable part (required)-- Statements (which can use items decl原创 2012-02-13 10:18:39 · 622 阅读 · 0 评论 -
PL/SQL的基本数据类型!!!
数值类型NUMBER(p,s)与数据库的NUMBER类型相同。p是精度,最大値为38,s是规模,表示小数点之后的位数,范围是-84~127。NUMBER(p)同上BINARY_INTEGER因为对NUMBER类型的数据无法直接进行算术运算,所以必须转变为二进制类型。指定范围是 -2147483647~2147483647 。不存储在数据库中,只用原创 2010-08-26 19:46:00 · 1316 阅读 · 0 评论 -
PL/SQL学习笔记四之结构控制语句!!!
set serveroutput ondeclare --if语句 v_empno emp.empno%type:=&no; v_deptno emp.deptno%type;begin select emp.deptno into v_deptno from emp where emp.empno=v_empno; if v_deptno=10 then d原创 2010-08-27 17:27:00 · 642 阅读 · 0 评论 -
PL/SQL学习笔记五之复合数据类型/批量绑定!!!
set serveroutput on--单行单列,可以用标量变量declare v_job emp.job%type;begin select emp.job into v_job from emp where emp.ename=&name; dbms_output.put_line(' 职业:'||v_job);end;/--单行多列,可用记录recordd原创 2010-08-30 17:43:00 · 860 阅读 · 0 评论 -
PL/SQL学习笔记十二之事件触发器!!!
--事件属性函数--客户端的ip地址select ora_client_ip_address from dual--当前数据库名select ora_database_name from dual--登录用户名select ora_login_user from dual--触发触发器的系统事件名ora_sysevent--ddl操作所对应的对象的所有者名ora_dict_obj_原创 2010-09-03 11:43:00 · 1206 阅读 · 0 评论 -
PL/SQL学习笔记十四之对象类型!!!
--对象类型包括对象类型规范和对象类型实体--对象类型可以不包含方法,但是至少包含一个属性--只包含属性的的对象类型可以没有对象类型实体--只包含属性的的对象类型create or replace type person_type1 as object( name varchar2(10), sex varchar2(2), age number(3));/--建立对象表c原创 2010-09-09 14:25:00 · 532 阅读 · 0 评论 -
SQL语言分类!!!
SQL语言的分类 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL。 1 数据查询语言DQL Q = Query 数据查询语言DQL用于检索数据库 基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块: SELECT FROM WHERE 2 数据操纵语言DML M = Manipulation 数据操纵原创 2010-08-26 14:47:00 · 707 阅读 · 0 评论 -
PL/SQL 11g R2 —— 定义PL/SQL变量 !
identifier [constant] datatype [not null] [:= | default expr];v_ename varchar2(10);v_sal number(6,2);v_tax constant number(3,2) := 5.5;v_data data;v_b boolean not null default false; 例子1:原创 2012-02-13 13:50:44 · 715 阅读 · 0 评论 -
PL/SQL学习笔记一之语法结构!!!
--PL/SQL块结构:declare --可选 /* 定义部分-定义常量、变量、复杂数据类型、游标、异常。*/begin --必须 /* 执行部分-PL/SQL语句、SQL语句。*/exception --可选 /* 异常处理部分-处理运行错误。*/end; --必须/set serveroutput ondeclare --简单匿名块 v_name varcha原创 2010-08-26 19:31:00 · 586 阅读 · 0 评论 -
PL/SQL 读写OS文件
24-1:建立directory conn system/manager CREATE DIRECTORY dir1 AS 'E:\DEMO'; GRANT READ,WRITE ON DIRECTORY EXP_DIR TO scott; w:以文本方式写入OS文件;a:以文本方式追加内容到OS文件;wb:以字节方式写入OS文件;ab:以字节方式追加内容到OS文件; 24-2:原创 2014-01-07 17:09:33 · 1111 阅读 · 0 评论