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;
/
复合类型
在调用包中的某个方法的时候需要这样调用
控制台调用 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;
/
复合类型
相关文章推荐
- type,isinstance判断一个变量的数据类型
- 类是一个数据类型;对象是类的变量,定义一个类,是一个抽象概念
- 指针是一个保存对象地址的变量,地址是一种数据类型
- 一个关于指针+记录数据类型的使用技巧
- 声明一个记录类型,定义记录类型变量,保存员工信息
- 当一个变量已经定义为一个数据类型时,可以改变他的数据类型吗
- 使用SharedPreference来存储一个变量,用来记录是否已经导入了SQLite数据。
- python中如何判断一个变量的数据类型?(原创)
- 记录Sqlserver2012附加Sqlserver2008的数据库出错的解决方案一、摘要 最近在实验里面用台式编写好了一个软件,想移植到家里的笔记本上。在附加数据的时候却出现了错误,具体也没有提示
- 一个简单的数据解析就是数组里面只有字典类型的用jsonmodel方式
- 一个变量被赋予了某个数据类型的值,可以随时再赋予这个变量其它数据类型的值
- ORACEL存储过程中声明一个可存储记录的像数据表一样的变量的简便方法。
- python中如何判断一个变量的数据类型
- Transact-SQL 示例 - 如何获取一个变量的数据类型
- 用vb怎么样能获取一个access 表里面的记录总数,并赋值给一个变量
- 获取一个变量的数据类型
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- 定义一个空类型,里面没有任何成员变量和成员函数。对该类型求sizeof 结果?
- 使用临时表与声明一个表数据类型的变量有什么区别
- JavaScript学习记录day2-数据类型、变量