ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PL/SQL练习题——plsqlAdd_Prac,Part A,1-12

2019-06-13 20:40:44  阅读:409  来源: 互联网

标签:练习题 12 Club value custname Prac year new custid


  本人最近在学PL/SQL,闲来无事做了一套练习题,写了点笔记,供大家参考。


 

  第一题,要求选出不合法的声明。A多余声明,C缺少冒号,D类型不匹配,只有B是正确的的。


 

  第二题,要求给出变量类型。答案如下,不多解释。

    a. CHAR / VARCHAR2

    b. DATE

    c. NUMBER

    d. BOOLEAN

    e. BOOLEAN

    f. DATE


 

  第三题,要求分别给出在1和2位置,每个变量的取值。这里要注意每个变量的作用域,看清楚一个匿名块里套着另一个匿名块,以及匿名块的范围,很容易得到答案。

  我的测试代码如下:

DECLARE 
v_custid NUMBER(4) := 1600;
v_custname VARCHAR2(300) := 'Women Sports Club';
v_new_custid NUMBER(3) := 500;
BEGIN
  DECLARE
    v_custid NUMBER(4) := 0;
    v_custname  VARCHAR2(300) := 'Shape up Sports Club';
    v_new_custid  NUMBER(3) := 300;
    v_new_custname  VARCHAR2(300) := 'Jansports Club';
  BEGIN
    v_custid := v_new_custid;
    v_custname := v_custname || ' ' || v_new_custname;
    DBMS_OUTPUT.put_line('(1) ' || v_custid || '——' || v_custname || '——' ||
                                   v_new_custid || '——' || v_new_custname);
  END;
  DBMS_OUTPUT.put_line('(2) ' || v_custid || '——' || v_custname || '——' ||
                                 v_new_custid);
  v_custid := (v_custid * 12) / 10;  
END; 

  屏幕上的输出如图:

  因此,可以得出答案:

  a. The value of V_CUSTID at position 1 is: 300

  b. The value of V_CUSTNAME at position 1 is: Shape up Sports Club Jansports Club

  c. The value of V_NEW_CUSTID at position 2 is: 500

  d. The value of V_NEW_CUSTNAME at position 1 is: Jansports Club

  e. The value of V_CUSTID at position 2 is: 1920

  f. The value of V_CUSTNAME at position 2 is: Women Sports Club


 

  第四题,要求写一个匿名块,根据输入的年份判断是否是闰年。

  输入使用替代变量,IF...THEN的条件判断不多说,这里提一下那一长串的条件。

  判断闰年的标准是:(1) 能被4整除且不被100整除;(2) 能被400整除。条件(1)中是通过AND连接的,条件(2)是通过OR连接的。初步确定条件应该这么写:

  ((= 4 AND <> 100) OR (= 400))

  由于AND的优先级是高于OR的(即使平级,在这道题里也是相同的做法),这里可以省去一层括号,即(= 4 AND <> 100 OR = 400)。

  给出代码如下,测试通过。

DECLARE
v_year INTEGER(4);
BEGIN
  v_year := '&请输入年份:';
  -- AND的优先级是高于OR的,因此执行的顺序是((= 4 AND <> 100) OR = 400)
  IF MOD(v_year, 4) = 0 AND MOD(v_year, 100) <> 0 OR MOD(v_year, 400) = 0 THEN
    DBMS_OUTPUT.put_line(v_year || ' is a leap year.');
  ELSE 
    DBMS_OUTPUT.put_line(v_year || ' is not a leap year.');
  END IF;
END;

 

标签:练习题,12,Club,value,custname,Prac,year,new,custid
来源: https://www.cnblogs.com/AlleyMeowy/p/11019326.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有