您的位置:首页 > 数据库 > Oracle

oracleday18(数据类型记录变量 多个变量放一个自创的里面 )

2017-08-19 08:26 211 查看
细节 包体中要实现的方法或者是过程 应当在包中声明

在调用包中的某个方法的时候需要这样调用 

控制台调用 exec 方案名.包名.过程名 

  call   方案名.包名.函数名

在java中去调用 包下的函数或是过程应当

String sql = "{call scott.mypackage1.pro1(?,?)}";

String sql = "select scott.mypackage1.fun1('KING')annual from dual";

触发器

触发器 是指隐含的执行的存储过程(它不是由程序员或者dba来显示调用而是因为某个操作引发执行的) 当定义触发器时 必须要指定触发的事件和触发的操作 常用的触发事件包括insert update delete语句 而触发操作实际就是一个pl/sql 块 可以使用create trigger来建立触发器触发器可维护数据库的安全和一致性

pl/sql 变量和常量

标量类型(scalar)

复合类型(composite)

参照类型(reference)

lob(large object)

pl/sql语法

pl/sql 的数据类型分为 标量类型(scalar) 复合类型(composite) 参照类型(reference) lob(large object)
 

标量(scalar)  定义 常用类型

在编写pl/sql 块时 如果要使用变量 需要在定义部分定义变量

pl/sql中定义变量和常量的语法如下

identifier 【constant】 datatype 【not full】 【:=| default expr】(赋初值)

identifier 名称

constant 指定常量需要指定它的初始值 且其值是不能改变的

datatype 数据类型

not null  指定变量不能为null

:= 给变量或是常量指定初始值
没加冒号 数据库认为你是判断他们的等不等

default 用于指定初始值

expr :指定初始值的pl/sql表达式 可以是文本值、其他变量、函数等

定义一个变长字符串

v_ename varchar2(10);

定义一个小数 范围 -9999.99~9999.99

v_sal number(6,2);
有效值 为第一个不为0

定义一个小数 并给一个初始值为 5.4

v_sal2 number(6,2) :=5.4

定义一个日期类型的数据

v_hiredate date

定义一个布尔变量不能为空 初始值为false

v_valid boolean :=false

pl/sql 在定义一个变量的时候 如果要赋初值 则需要使用 :=

比如 v_ename varchar(32) :='xx';

create or relace procedure pro1(v_in_empno in number) is

--定义变量

v_sal number;

v_tax_rate number(3,2):=0.03;

v_ename emp.ename%type ;--为了让v_ename的类型更加灵活 我们用%type  它就自适应了

v_tax number;

begin

select ename,sal into v_ename,v_sal from emp where empno=v_in_empno

--算个人所得税

v_tax:=v_sal*v_tax_rate --一定要加:

dbms_output.put_line(v_enanme||'工资是='||‘v_sal’||‘个人所得税=’||v_tax);

set serveroutput on; --允许打印出数据

exec pro1(xxxx);

%type 类型 为了让我们在pl/sql编程中 让变量 的类型和大小表的列的大小和类型一致 可以使用%type 
v_ename emp.ename%type ;

会按照数据库的列来确定你定义的变量的类型和长度 标识符名  表名.列名%type;

复合变量 composite 
用于存放多个值的变量 常用的包括 pl/sql 记录 pl/sql表
类似与高级语言中的结构体 需要注意的是 当引用pl/sql记录成员时  必须要加记录变量来那个作为前缀 (记录变量.记录成员)

type 自定义的pl/sql记录名 is record(
变量名 变量类型,
变量名 变量类型
);
//使用自定义的pl/sql记录
变量名 自定义的pl/sql 记录名
编写一个过程 可以接受一个用户编号 显示该用户的名字薪水 工作岗位 用pl/ sql 记录来实现
pl/sql 复合变量
pl/sql 记录
基本语法是
type 自己定义的记录名称 is record(
变量 变量的类型,
变量  变量的类型
)
create or replace procedure pro1(v_in_empno in number ) is
--定义一个记录数据类型
type my_emp_record is record(
v_ename emp.ename%type,
v_sal    emp.sal%type,
v_job   emp.job%type
);
--定义一个变量 该变量的类型是 my_emp_record
v_emp_record my_emp_recordl;
begin
select ename,sal,job into v_emp_record from emp where empno=v_in_empno;
dbms_output.put_line('名字:'||v_emp_record.v_ename || '工资:'||v_emp_record.v_sal);
end; 
/

复合类型 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐