oracle的笔记,凑合着看吧!4.PL/SQL
2009-05-26 23:14
459 查看
PL/SQL是SQL的补充语言,相当于数据库内置的一种语言,用于写存储过程与触发器;
拥有功能:块结构,变量和类型,条件逻辑,循环,游标,保存查询返回结果,sql函数,存储过程,包;
1.存储过程:就是带有名字的PL/SQL的程序块,创建后可以直接调用,仅此而已;
语法:create or replace procedure 存储过程名(参数) is ..PL/SQL....
//如果没有此名字就建立,有就替换;replace 替换
//参数格式:变量名 in/out 类型,默认是in
调用: exec 存储过程名;
2.函数:相当于java的方法,拥有返回值;用户自己调用
特殊数据类型:%type , %rowtype, sqi%rowcount(影响了多少行);
注: PL/SQL中使用select语句,此select语句必须有返回的记录并且还必须只有一条,不然报错,记得要有into;
PL/SQL中使用增删改的语句,后面跟随一个commit;
PL/SQL中使用建表语句,格式为:execute immediate '建表语句';
例如:
declare
name emp.sal%type;
v_sal emp%rowtype;
//相当于表对应的类的类型
begin
name := 2450;
select * into v_sal from emp where sal = name;
//into是最重要的,呵呵,他是注入变量的;
dbms_output.put_line(v_sal.ename);
end;
他分为四个部分declare(可省略), begin, exception, end
普通:
1.简单输出'你好'的方法:
set serveroutput on;
//将内置的环境变量serveroutput设置为on,默认是off(不输出),
begin
dbms_output.put_line('你好');
end;
2.声明有变量的输出:
set serveroutput on;
declare
name varchar2(20);
//声明变量;
sex emp.ename%type;
//此变量随着emp.ename字段的类型;
begin
name := 'wang';
//赋值,注意是赋值是':='
dbms_output.put_line(name);
end;
3.有异常的写法:
set serveroutput on;
declare
name number(3,0);
begin
name := 2/0;
dbms_output.put_line(name);
exception
when others then
//任何异常都执行以下操作;
dbms_output.put_line('错误'||'wang');
//相当于Java中'错误'+'wang'
end;
复合变量,就是自定义的变量类型,分别是table, record ;
table :
语法: type 变量名 is table of 数据类型 index by 数据类型;
table有点类似于数组的数据类型,具体看例子吧:
set serveroutput on;
declare
type type_table_stt is table of number(4,0) index by binary_integer;
//type:声明是定义复合类型, index by binary_integer :下标为binary_integer类型;
name type_table_stt;
begin
name(0) := 12;
name(1) := 123;
name(-1) := 3;
bms_output.put_line(name(0));
end;
record :
语法: type 变量名 is record ( 声明变量);
record 是有点类似于java中的类的,可以他内部声明属性;
例子:
declare
type type_record_stt is record (
name varchar2(10),
sex varchar2(10)
);
name type_record_stt;
begin
name.name := '12';
name.sex := 'wang';
dbms_output.put_line(name.sex);
end;
拥有功能:块结构,变量和类型,条件逻辑,循环,游标,保存查询返回结果,sql函数,存储过程,包;
1.存储过程:就是带有名字的PL/SQL的程序块,创建后可以直接调用,仅此而已;
语法:create or replace procedure 存储过程名(参数) is ..PL/SQL....
//如果没有此名字就建立,有就替换;replace 替换
//参数格式:变量名 in/out 类型,默认是in
调用: exec 存储过程名;
2.函数:相当于java的方法,拥有返回值;用户自己调用
特殊数据类型:%type , %rowtype, sqi%rowcount(影响了多少行);
注: PL/SQL中使用select语句,此select语句必须有返回的记录并且还必须只有一条,不然报错,记得要有into;
PL/SQL中使用增删改的语句,后面跟随一个commit;
PL/SQL中使用建表语句,格式为:execute immediate '建表语句';
例如:
declare
name emp.sal%type;
v_sal emp%rowtype;
//相当于表对应的类的类型
begin
name := 2450;
select * into v_sal from emp where sal = name;
//into是最重要的,呵呵,他是注入变量的;
dbms_output.put_line(v_sal.ename);
end;
他分为四个部分declare(可省略), begin, exception, end
普通:
1.简单输出'你好'的方法:
set serveroutput on;
//将内置的环境变量serveroutput设置为on,默认是off(不输出),
begin
dbms_output.put_line('你好');
end;
2.声明有变量的输出:
set serveroutput on;
declare
name varchar2(20);
//声明变量;
sex emp.ename%type;
//此变量随着emp.ename字段的类型;
begin
name := 'wang';
//赋值,注意是赋值是':='
dbms_output.put_line(name);
end;
3.有异常的写法:
set serveroutput on;
declare
name number(3,0);
begin
name := 2/0;
dbms_output.put_line(name);
exception
when others then
//任何异常都执行以下操作;
dbms_output.put_line('错误'||'wang');
//相当于Java中'错误'+'wang'
end;
复合变量,就是自定义的变量类型,分别是table, record ;
table :
语法: type 变量名 is table of 数据类型 index by 数据类型;
table有点类似于数组的数据类型,具体看例子吧:
set serveroutput on;
declare
type type_table_stt is table of number(4,0) index by binary_integer;
//type:声明是定义复合类型, index by binary_integer :下标为binary_integer类型;
name type_table_stt;
begin
name(0) := 12;
name(1) := 123;
name(-1) := 3;
bms_output.put_line(name(0));
end;
record :
语法: type 变量名 is record ( 声明变量);
record 是有点类似于java中的类的,可以他内部声明属性;
例子:
declare
type type_record_stt is record (
name varchar2(10),
sex varchar2(10)
);
name type_record_stt;
begin
name.name := '12';
name.sex := 'wang';
dbms_output.put_line(name.sex);
end;
相关文章推荐
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 八、PL/SQL跳转/判断/循环语句块
- Oracle笔记 十一、PL/SQL函数和触发器
- oracle 笔记7 pl/sql 开始
- oracle复习笔记之PL/SQL程序所要了解的知识点
- Oracle之PL/SQL学习笔记
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle PL/SQL学习笔记
- ORACLE PL/SQL 对象(object)学习笔记(一)
- Oracle笔记 九、PL/SQL 游标的使用
- 【数据库学习笔记】Oracle_03_PL/SQL深入:游标编程,自定义异常
- ORACLE PL/SQL 集合学习笔记(三)
- Oracle笔记 十一、PL/SQL函数和触发器
- oracle中pl/sql编程-笔记
- Oracle笔记 九、PL/SQL 游标的使用