热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

PL/SQL编程基础(1)

下面分享一些Oracle的PLSQL编程方面的习题,以下为个人写的答案。多指教!1、简单PLSQL块程序编写与运行,要求:接收某一姓名信息XXX,并


下面分享一些Oracle的PL/SQL编程方面的习题,以下为个人写的答案。多指教!

1、简单PL/SQL块程序编写与运行,要求:接收某一姓名信息XXX,并输出显示“Hello XXX,今天是:当前日期

或者:

2、练习PL/SQL中各种类型变量的定义和使用

参见教材p140实验1,以scott模式下的表为例以用户自定义的表为例,举例练习PL/SQL中各种类型变量的定义和使用(包括标量变量%type类型变量自定义记录变量%rowtype变量)。将所有举例的PL/SQL语句记录下来。

(1)使用标量变量。

 

(2)使用%type类型的变量。

(3)自定义记录变量。

 


 

(4)使用%rowtype变量。

   

3、练习使用基本流程控制(循环)语句编写PL/SQL代码完成指定的数据处理功能

(1)利用LOOp循环方式计算1到100之间的偶数项之和(运行结果:2550)。

declare

       i number:=1;

       v_sum number:=0;

begin

       Loop

              exitwhen i>100;

              i:=i+1;

              ifmod(i,2)=0 then

                     v_sum:=v_sum+i;

              endif;

       end loop;

end;

/

 

 

(2)利用WHILE循环打印出50以内所有能被3整除的整数,以及该整数的个数(运行结果:16)。

 

(2)利用FOR循环计算并输出S=1!+2!+…+10! (运行结果:4037913)。

declare

     var_snumber:=1;

     var_sumnumber:=0;

Begin

     For a in 1..100loop

            For b in 1..a loop

                   var_s:=var_s*b;

            end loop;

            var_sum:=var_sum+var_s;

     end loop;

end;

/

 

4、练习使用基本流程控制语句编写PL/SQL代码完成指定的数据处理功能。

(1)题目要求:使用临时变量(&e_no)要求用户输入雇员号,利用IF语句判断该雇员的岗位是否为’CLERK’,如果是则将该雇员的工资提高1%。

答:declare

              v_e_no varchar2(80):=&e_no;

       begin

              ifv_e_no=’ CLERK’then

                     update emp

                     set sal = sal*1.01

                     where job =’CLERK’;

              endif;

       end;

       /

 

(2)题目要求:使用临时变量(&d_no)要求用户输入部门号,根据输入的部门号,利用使用选择器的case判断:

若是10号部门,则将该部门雇员的补助(对应EMP表中的字段COMM)改为100;若是20号部门,则将该部门雇员的补助改为80;若是30号部门,则将该部门雇员的补助改为50,否则输出“不存在该部门!”

答:declare

              v_d_no varchar2(20):=&d_no;

       begin

              casev_d_no

                     when 10 then  

                            updateemp

                            setcomm=100

                            wheredeptno=’10’;

 when20 then

                            updateemp

                            setcomm=80

                            wheredeptno=’20’;

when 30 then  

                            updateemp

                            setcomm=50

                            wheredeptno=’30’;

                     else

                            dbms_output.put_line(‘不存在该部门!’);

              endcase;

       end;

       /

 

(3)题目要求:使用临时变量(&e_no)要求用户输入雇员号,根据输入的雇员号,利用不使用选择器的case判断:

若雇员工资小于1000,则将该雇员的补助(对应EMP表中的字段COMM)改为100;若雇员工资在1000到2000,则将该雇员的补助改为80;若雇员工资大于2000,则将该雇员的补助改为50

 

答:declare

              v_e_no number:=&e_no;

       begin

              case

                     when v_e_no<1000 then

                            updateemp

                            setcomm=100

                            wheredeptno<1000;

                     when v_e_no<2000 and v_e_no>1000then

                            updateemp

                            setcomm=80

                            wheredeptno<2000 and dept>1000;

                     when v_e_no>2000 then

                            updateemp

                            setcomm=50

                            wheredeptno>2000;

              endcase;

       end;

      /

注意:
          1)在使用for循环时,中间是“..”而不是“...”;  
          2)与其他编程语言不同的是,在pl/sql块语句中,赋值语句为“:=”;
          3)声明变量时,要注意标识符命名的规范,否则可能会出现错误。 标识符命名的规范,详见: 点击打开链接

 


推荐阅读
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文介绍如何在 FireDAC 环境下实现 FDMEMTable 字段的自动获取,为开发人员提供便捷的数据处理方式。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文探讨了在Oracle数据库中,动态SQL语句的执行及其对事务管理的影响,特别是关于回滚操作的有效性。重点讨论了一个具体场景:将预警短信从当前表迁移到历史表时遇到的字段长度不匹配问题及相应的异常处理。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
author-avatar
最后一次让我牵你手卍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有