加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle的pl/sql变量范例

发布时间:2021-03-23 02:24:41 所属栏目:站长百科 来源:网络整理
导读:pl/sql界说 sql是布局化查询说话。sql是不是一个编程说话?编程说话一样平常都可以或许声明变量,写前提判定,轮回。sql不具备这 些特性,全部sql不是一门编程说话。我们在现实的开拓中,有这种必要,把sql语句和编程说话的特征团结起来。 oracle 就提供了pl/sql这种

pl/sql界说

  sql是布局化查询说话。sql是不是一个编程说话?编程说话一样平常都可以或许声明变量,写前提判定,轮回。sql不具备这
些特性,全部sql不是一门编程说话。我们在现实的开拓中,有这种必要,把sql语句和编程说话的特征团结起来。
oracle 就提供了pl/sql这种说话来办理这种题目。行使pl/sql有什么利益:
  1.可以进步措施的运行服从,由于可以或许镌汰数据库的会见次数
  2.可以对伟大的营业逻辑举办封装
  3.pl/sql具有编程说话的特征,可以写if else 实现伟大的营业逻辑

pl/sql块
pl/sql是用块来打点内部措施的。pl/sql块分匿名块和定名块。
匿名块:没著名字块就是匿名块 匿名块不会生涯到数据库中,执行完就没有了。相同于java的main要领。
定名块:著名字的块就是定名块。定名块 进程 函数 游标 触发器 都是定名块。

pl/sql匿名块的布局:
  declare
  --变量声明部门
  begin
  -- 营业逻辑处理赏罚部门
  exception
  -- 非常处理赏罚部门
  end;

留意:1,pl/sql块 变量名,要害字不区分巨细写。
  ? ? 2,变量声明部门是可选的。营业逻辑处理赏罚部门是必需的。非常处理赏罚部门是可选的。
  ? ? 3,end后头必需加; declare begin exception 后头都不要加;

变量和常量

?

声明变量 :
变量名 变量范例;
  变量名一样平常提议以v_开头.
声明常量要加上constant要害字:
  常量名 constant 常量范例;

变量范例

Oracle的pl/sql变量范例

其他范例

?%type范例(列范例)

%type范例指的是声明变量的时辰,该变量参考某个表的某个列的范例。

declare
-- 变量声明部门 v_ename 范例参考emp表的ename的范例
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
-- 营业逻辑执行部门
select ename,sal into v_ename,v_sal from emp where empno=&请输入员工编号;
-- 把员工姓名打印到节制台
dbms_output.put_line(‘员工姓名:‘||v_ename||‘,根基人为:‘||v_sal);
exception
-- 非常处理赏罚部门
when no_data_found then
dbms_output.put_line(‘您输入的员工编号不存在‘);
end;

%rowtype(行范例)
%rowtype参数某个表的范例。%rowtype中可以存储多个数据,详细可存几多个和表的字段数一样。
举例:输入员工编号,打印员工的姓名,薪水,奖金,雇佣日期。

declare
-- 声明行范例变量
v_emp emp%rowtype;
begin
-- 营业逻辑执行部门
select * into v_emp from emp where empno=&请输入员工编号;
-- 把员工姓名打印到节制台
dbms_output.put_line(‘员工姓名:‘||v_emp.ename||‘,根基人为:‘||v_emp.sal||‘,奖金:‘||v_emp.comm
||‘雇佣日期:‘||v_emp.hiredate);
exception
-- 非常处理赏罚部门
when no_data_found then
dbms_output.put_line(‘您输入的员工编号不存在‘);
end;

record范例(记录范例)
record可以领略为可以自界说的行范例。
record范例在行使之前必需声明该范例。
举例:输入员工编号,打印员工的姓名,根基人为,总人为。

declare
-- 声明record范例
type emp_record_type is record(
ename emp.ename%type,sal emp.sal%type,total emp.sal%type
);
-- 声明record范例的变量
v_emp emp_record_type;
begin
-- 查询数据,给变量赋值
select ename,sal,sal+nvl(comm,0) into v_emp from emp where empno=&no; 
-- 输入record范例变量中的数据
dbms_output.put_line(‘员工姓名:‘||v_emp.ename||‘,总人为:‘||v_emp.total);
end;

table范例 (表范例)
无论是行范例照旧记录范例只能存储一行数据,假如要存储多行数据,必要用到table范例。table范例也必要先声
明范例,再声明该范例的变量。
举例:按照员工编号查询员工的信息,存储到table范例的变量中,再输出出来。

declare
-- 声明table范例 is table of 后可以跟行范例,也可所以记录范例
type emp_table_type is table of emp%rowtype
-- 指定下标的增添方法为整数,每次增添1
index by binary_integer;
-- 声明table范例的变量
v_emp emp_table_type;
begin
-- 把编号为7369的员工的信息存储到table范例变量中
select * into v_emp(1) from emp where empno=7369;
-- 把编号为7499的员工的信息存储到table范例变量中
select * into v_emp(2) from emp where empno=7499;
--数据table范例变量中的数据
dbms_output.put_line(‘员工姓名:‘||v_emp(1).ename||‘,根基人为:‘||v_emp(1).sal);
dbms_output.put_line(‘员工姓名:‘||v_emp(2).ename||‘,根基人为:‘||v_emp(2).sal);
end;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读