[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数

目录

实验七  PL/SQL语言

一、 实验目的

二、实验要求

三、 实验内容

(1)编写一个程序,输入玩具的价格,比较玩具的价格并显示折扣,如果价格高于或等于500元,则优惠150元;价格高于或等于400元,则优惠100元;如果价格高于或等于250元,优惠50元,价格低于250元,则不优惠。

(2)编写一个程序,求1~100的和;

(3)利用LOOP循环方式,键盘输入n,计算1到n之间的偶数项之和(运行结果:2550)。

(4)编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。

(5)编写程序,键盘输入n,计算1+2+3+...​编辑前n项之和。

(6)要求编写程序,输入n个字符,统计其中英文字母、数字字符和其他字符的个数。输入:aZ&09Az 输出:letter = 4, digit = 2, other = 1

(7)要求编写程序,将字符串中的每一个字母都用英文字母表中排在其后面的一个字母来替换。例如,字母’A’被替换成字母’B’ ,字母’H’被替换成字母’I’,字母’L’被替换成字母’M’,因此字符串”HAL”被替换成”IBM”。如是字母’Z’被替换成字母’A’。

​编辑

四、问题解答及实验结果


实验七  PL/SQL语言

一、 实验目的

  1. 了解PL/SQL程序中变量的定义、数据类型;
  2. 理解变量的赋值方法。
  3. 掌握PL/SQL程序中的流程控制结构:如条件语句(IF语句和CASE语句),循环语句(简单循环、WHILE循环和FOR循环),能够编写简单的PL/SQL程序;
  4. 了解常见异常相关知识;
  5. 了解常见函数;
  6. 重点:表的创建、修改、删除、查看等操作、序列和同义词的作用及应
  7. 难点:数据完整性约束的添加、删除等操作

二、实验要求

(1)完成相应代码编写,代码通过相应的测试案例;

三、 实验内容

(1)编写一个程序,输入玩具的价格,比较玩具的价格并显示折扣,如果价格高于或等于500元,则优惠150元;价格高于或等于400元,则优惠100元;如果价格高于或等于250元,优惠50元,价格低于250元,则不优惠。

set serveroutput on

DECLARE 

    v_price NUMBER; 

    v_discount NUMBER; 

    v_final_price NUMBER; 

BEGIN 

    -- 输入玩具的价格 

    v_price := &enter_price; -- 这里&enter_price是一个替代变量,运行时会被实际的价格替换 

 

    -- 根据价格计算折扣 

    IF v_price >= 500 THEN 

        v_discount := 150; 

    ELSIF v_price >= 400 THEN 

        v_discount := 100; 

    ELSIF v_price >= 250 THEN 

        v_discount := 50; 

    ELSE 

        v_discount := 0; 

    END IF; 

 

    -- 计算最终价格 

    v_final_price := v_price - v_discount; 

 

    -- 输出结果 

    DBMS_OUTPUT.PUT_LINE('玩具原价: ' || v_price); 

    DBMS_OUTPUT.PUT_LINE('折扣: ' || v_discount); 

    DBMS_OUTPUT.PUT_LINE('玩具最终价格: ' || v_final_price); 

END; 

/

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第1张图片 [Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第2张图片

(2)编写一个程序,求1~100的和;

for循环

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第3张图片

loop简单循环

set serveroutput on

declare

 v_sum number:=0;

 v_i number:=1;

 begin

 loop 

  v_sum:=v_sum+v_i;

  v_i:=v_i+1;

  exit when v_i>100;

  end loop;

 DBMS_OUTPUT.PUT_LINE('1到100的和为: ' || v_sum); 

end;

/

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第4张图片

while循环

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第5张图片

(3)利用LOOP循环方式,键盘输入n,计算1到n之间的偶数项之和(运行结果:2550)。

set serveroutput on

declare

  v_sum number:=0;

  v_i number:=2;

  v_n number;

begin

  v_n:=&n;

  loop

    v_sum:=v_sum+v_i;

    v_i:=v_i+2;

    exit when v_i>v_n;

  end loop;

  dbms_output.put_line(v_sum);

end;

/

 [Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第6张图片

(4)编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。

测试案例:

输入:1234567     输出:7654321

set serveroutput on

declare

v_number number:=&enter_number;

v_reversed number:=0;

v_digit number;

begin

 for i in reverse 1..length(to_char(v_number)) loop

 v_digit:=to_number(substr(to_char(v_number),i,1));

 v_reversed:=v_reversed*10+v_digit;

end loop;

dbms_output.put_line('反转后的数字: ' ||v_reversed);

end;

/

 [Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第7张图片

(5)编写程序,键盘输入n,计算1+2+3+...前n项之和。

测试案例:

输入:10     输出:22.47

set serveroutput on

declare

 v_sum number:=0;

 v_n number;

 begin

 v_n:=&n;

 for i in 1..v_n loop

  v_sum:=v_sum+sqrt(i);

end loop;

dbms_output.put_line('Sum is:'||round(v_sum,2));

end;

/

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第8张图片 

(6)要求编写程序,输入n个字符,统计其中英文字母、数字字符和其他字符的个数。输入:aZ&09Az 输出:letter = 4, digit = 2, other = 1

set serveroutput on

declare

 str varchar2(100);

 len number;

 letter_cnt number:=0;

 digit_cnt number:=0;

 other_cnt number:=0;

begin

 str:='&input_str';

 len:=length(str);

for i in 1..len loop

  if(ascii(substr(str,i,1))>=65 and ascii(substr(str,i,1))<=90) or (ascii(substr(str,i,1))>=97 and ascii(substr(str,i,1))<=122) then  -- 判断是否为英文字母

  letter_cnt:=letter_cnt+1;

  elsif substr(str,i,1) in ('0','1','2','3','4','5','6','7','8','9') then  -- 判断是否为数字字符

  digit_cnt:=digit_cnt+1;

  else  -- 其他字符

  other_cnt:=other_cnt+1;

  end if;

end loop;

dbms_output.put_line('letter='||letter_cnt||',digit='||digit_cnt||',other='||other_cnt);

end;

/

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第9张图片 

(7)要求编写程序,将字符串中的每一个字母都用英文字母表中排在其后面的一个字母来替换。例如,字母’A’被替换成字母’B’ ,字母’H’被替换成字母’I’,字母’L’被替换成字母’M’,因此字符串”HAL”被替换成”IBM”。如是字母’Z’被替换成字母’A’。

注意:ascii()可以将字母转成相对应的ascii码,chr()可以逆转ascii函数。

set serveroutput on

declare

 input_str varchar2(100);

 output_str varchar2(100);

begin

input_str:='&input_str';

for i in 1..length(input_str) loop

if substr(input_str,i,1)='Z' then

 output_str:=output_str||'A';

else

 output_str:=output_str||chr(ascii(substr(input_str,i,1))+1);

end if;

end loop;

dbms_output.put_line('Original string:'||input_str);

dbms_output.put_line('New string:'||output_str);

end;

/

[Oracle]编写一个程序,用于接受用户输入的数字,将该数左右反转,然后显示反转后的数。测试案例:输入:1234567 输出:7654321 要求编写程序,输入n个字符,统计其中英文字母、数_第10张图片

四、问题解答及实验结果

新建一个word,命名为“X班+学号+姓名+实验七”将相关代码及代码测试成功的截图放到相应题号下面。

你可能感兴趣的:(oracle,oracle11,sql)