前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle PL/SQL例9:为变量赋值

Oracle PL/SQL例9:为变量赋值

作者头像
SQLplusDB
发布2022-12-20 12:01:27
9120
发布2022-12-20 12:01:27
举报

编者按:

四十不惑是要有自己的判断力。根据自身的状况,知道对自己而言,什么是最重要的!

最好的学习是实践加上看官方文档。官方文档中的代码例更是精华和重点所在。

IT行业如此,编程如此,Oracle PL/SQL的学习更是如此。

本系列以摘自《Database PL/SQL Language Reference》的PL/SQL代码例为主进行介绍。

【免责声明】本公众号文章仅代表个人观点,与任何公司无关。

编辑|SQL和数据库技术(ID:SQLplusDB)

Oracle PL/SQL例

Oracle PL/SQL编程基础 Oracle PL/SQL例2:处理查询的结果行(基础循环) Oracle PL/SQL例3:使用双引号 Oracle PL/SQL例4:文字(Literals)换行的处理 Oracle PL/SQL例5:注释 Oracle PL/SQL例6:声明变量/常量 Oracle PL/SQL例7:%TYPE 属性 Oracle PL/SQL例8:标识符引用

变量赋值的方法主要包括如下方法:

代码语言:javascript
复制
1. 通过赋值语句为变量赋值
2. 使用SELECT INTO或FETCH语句为变量赋值
3. 将变量作为OUT或IN OUT参数传递给子程序,然后在子程序内赋值。

1. 通过赋值语句为变量赋值

代码语言:javascript
复制
variable_name := expression;

例:

代码语言:javascript
复制
DECLARE  -- You can assign initial values here
  wages          NUMBER;
  hours_worked   NUMBER := 40;
  hourly_salary  NUMBER := 22.50;
  bonus          NUMBER := 150;
  country        VARCHAR2(128);
  counter        NUMBER := 0;
  done           BOOLEAN;
  valid_id       BOOLEAN;
  emp_rec1       employees%ROWTYPE;
  emp_rec2       employees%ROWTYPE;
  TYPE commissions IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
  comm_tab       commissions;
 
BEGIN  -- You can assign values here too
  wages := (hours_worked * hourly_salary) + bonus;
  country := 'France';
  country := UPPER('Canada');
  done := (counter > 100);
  valid_id := TRUE;
  emp_rec1.first_name := 'Antonio';
  emp_rec1.last_name := 'Ortiz';
  emp_rec1 := emp_rec2;
  comm_tab(5) := 20000 * 0.15;
END;
/

2. 使用SELECT INTO或FETCH语句为变量赋值

代码语言:javascript
复制
SELECT select_item [, select_item ]... 
INTO variable_name [, variable_name ]...
FROM table_name;

例:

代码语言:javascript
复制
DECLARE
  bonus   NUMBER(8,2);
BEGIN
  SELECT salary * 0.10 INTO bonus
  FROM employees
  WHERE employee_id = 100;
END;

DBMS_OUTPUT.PUT_LINE('bonus = ' || TO_CHAR(bonus));
/
结果:
bonus = 2400

3. 将变量作为OUT或IN OUT参数传递给子程序,然后在子程序内赋值。

代码语言:javascript
复制
DECLARE
  emp_salary  NUMBER(8,2);
 
  PROCEDURE adjust_salary (
    emp        NUMBER, 
    sal IN OUT NUMBER,
    adjustment NUMBER
  ) IS
  BEGIN
    sal := sal + adjustment;
  END;
 
BEGIN
  SELECT salary INTO emp_salary
  FROM employees
  WHERE employee_id = 100;
 
  DBMS_OUTPUT.PUT_LINE
   ('Before invoking procedure, emp_salary: ' || emp_salary);
 
  adjust_salary (100, emp_salary, 1000);
 
  DBMS_OUTPUT.PUT_LINE
   ('After invoking procedure, emp_salary: ' || emp_salary);
END;
/
结果:
Before invoking procedure, emp_salary: 24000
After invoking procedure, emp_salary: 25000
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SQL和数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Oracle PL/SQL例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档