Oracle的plsql变量类型

Oracle的plsql变量类型,第1张

概述pl/sql定义   sql是结构化查询语言。sql是不是一个编程语言?编程语言一般都能够声明变量,写条件判断,循环。sql不具备这 些特征,所有sql不是一门编程语言。我们在实际的开发中,有这种需要,把sql语句和编程语言的特性结合起来。 oracle 就提供了pl/sql这种语言来解决这种问题。使用pl/sql有什么优点:   1.可以提高程序的运行效率,因为能够减少数据库的访问次数   2.

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 常量类型;

变量类型

其他类型

 %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 thendbms_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 thendbms_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-- 指定下标的增长方式为整数,每次增长1index 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;
总结

以上是内存溢出为你收集整理的Oracle的pl/sql变量类型全部内容,希望文章能够帮你解决Oracle的pl/sql变量类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1166438.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存