首页 > 其他分享 >输入输出,方法,循环

输入输出,方法,循环

时间:2024-04-09 22:57:53浏览次数:19  
标签:dbms sal -- 输入输出 循环 put output line 方法

--问题输出 下面的内容:oracle世界我来了,一刀999
--declare用于定义变量dbms_output.put_line()是输出语句,
--DECLARE
--BEGIN
--END

DECLARE
msg varchar2(20) := 'Hello';
BEGIN
dbms_output.put_line(msg||' oracle世界我来了,一刀999');
END;
/

-------------------“/”手动输入,输入/可以结束程序-----------------------
--输出语句显示到当前窗口的前提,一个窗口使用一次就可以了
set serveroutput on
 /

  declare
    sex char(1) := 'M';
  begin
    if sex='M' then
     dbms_output.put_line('帅哥');
    elsif sex='F'then
     dbms_output.put_line('美女');
    else
     dbms_output.put_line('小孩');
    end if;
  end;
  /

使用if 判断条件  输入 一个数字 1 2 3
如果 数字 1 输出优秀
如果 数字 2 输出很优秀
如果 数字 3 输出非常优秀
 
---------“&n”:会弹出窗口,输入交互------------
 declare
    nu number(1) := &n;
  begin
    if nu=1 then
     dbms_output.put_line('优秀');
    elsif nu=2 then
     dbms_output.put_line('很优秀');
    else
     dbms_output.put_line('非常优秀');
    end if;
  end;
/
有一个NUMBER(3)变量,
如果大于0显示1;
如果小于0显示-1;
如果等于0显示0;
declare
  n number(3) :=10;
begin
  if n>0 then
    dbms_output.put_line(1);
  elsif n<0 then
    dbms_output.put_line(-1);
  else
    dbms_output.put_line(0);
  end if;
end;
/

转变为交互式的写法


在c#中
按cw按两下tab输出
if一下tab快捷if框架
其他快捷键自己设置

page163--7.6,7.8
declare
     v_deptno emp.deptno%type;
    v_empno emp.empno%type;
    v_sal number(6,2);
begin
  v_empno:=&no;
select deptno,sal INTO v_deptno,v_sal FROM emp WHERE empno=v_empno;
  if v_deptno = 10 THEN
    UPDATE emp SET sal=v_sal+100 WHERE empno = v_empno;
  elsif v_deptno=20 then
    UPDATE emp SET sal=v_sal+200 WHERE empno = v_empno;
  elsif v_deptno=30 then
    UPDATE emp SET sal=v_sal+300 WHERE empno = v_empno;
  else
    UPDATE emp SET sal=v_sal+400 WHERE empno = v_empno;
  end if;
end;
-----------------
set serverout on
declare
    i number:=1;
begin
 LOOP
  Dbms_output.put_line(i||'的立方为'||i*i*i);
  i:=i+1;
  exit when i>5;
  end loop;
end;
------------------------------------------
--for循环,
--FOR ... in ... LOOP:循环条件
--END LOOP;

 BEGIN
   FOR i IN 1..50 LOOP
     dbms_output.put_line(i*i+1);
   END LOOP;
 END;

问题 1 到 50 ?
     3到40  ?
------------------------------------------
--用变量查询7900职员的姓名工资入职日期,工作
declare
  v_name varchar2(10);
  v_sal number(7,2);
  v_job emp.job%type ;
  v_HIREDATE  emp.hiredate%type;
begin
  select ename,sal,hiredate,job 
  into v_name,v_sal,v_HIREDATE,v_job
  from emp 
  where empno=7900; 
dbms_output.put_line('职员姓名:'||v_name);
  dbms_output.put_line('工资:'||v_sal);
  dbms_output.put_line('入职日期:'||v_HIREDATE);
  dbms_output.put_line('工作:'||v_job);
end;
/
-----------------------------------------
--用变量输出king这个人的信息包含他的工作编号empno
--emp.job%type:同emp表的数据类型一致
declare
  v_empno number(10);
  v_name varchar2(10);  
  v_sal number(7,2);
  v_job emp.job%type ;
  v_hiredate  emp.hiredate%type;
begin
  select ename,empno,sal,hiredate,job 
  into v_name,v_empno,v_sal,v_hiredate,v_job
  from emp 
  where ename='KING'; 
  dbms_output.put_line('姓名:'||v_name);
  dbms_output.put_line('职工编号:'||v_empno);
  dbms_output.put_line('工资:'||v_sal);
  dbms_output.put_line('入职日期:'||v_hiredate);
  dbms_output.put_line('工作:'||v_job);
end;
/
--------------------------------------
编写一段PL/SQL,实现计算个人
所得税计算逻辑。(参考图例的扣除方法)
3500免征
如果超过3500,按以下阶段方式扣除
--小于1500时,税率按3%,速算扣除数0
--在1500到4500区间时,税率10%,速算扣除数105
--在4500到9000区间时,税率20%,速算扣除数555
--大于等于9000时,税率25%,速算扣除数1005
declare
  v_sal number(10):= 10000;
  v_tax number(7,2);
  v_tax_sal number(10);
begin
  --计算出应交税的工资部分
  v_tax_sal := v_sal-3500;
  --判断区间
  if v_tax_sal<1500 then
     v_tax := v_tax_sal*0.03;
  elsif v_tax_sal<4500 then
     v_tax := v_tax_sal*0.1-105;
  elsif v_tax_sal<9000 then
     v_tax := v_tax_sal*0.2-555;
  else
     v_tax := v_tax_sal*0.25-1005;
  end if;
  dbms_output.put_line('工资:'||v_sal);
  dbms_output.put_line('交税:'||v_tax);
end;

declare
  sal number(10):=&n;
  v_tax number(7,2);
begin
  if sal>3500 and sal<5000 then
  v_tax:=sal*0.03;
    dbms_output.put_line('扣税:'|| v_tax);
 
end if;
end;
-----------------------------------------------------
新增需求
根据EMP表记录生成纳税记录表的信息
纳税记录表EMP_TAX
主键ID
员工编号EMPNO
员工名称ENAME
员工工资总额SAL (EMP中SAL+COMM合计)
纳税额TAX(根据前面扣税逻辑计算的金额)
纳税时间TAX_DATE(系统时间)
编写一个PL/SQL完成上述功能

create table emp_tax(
 ID NUMBER primary key,
 EMPNO NUMBER(4),
 ENAME VARCHAR2(10),
 SAL NUMBER(7,2),
 TAX NUMBER(7,2),
 TAX_DATE DATE
);
create sequence tax_seq;

-----PL/SQL---------
declare
 CURSOR c_emp IS select * from emp;
 v_emp emp%ROWTYPE;--记录变量,保存一行员工信息
 v_total emp.sal%TYPE;--工资总额
 v_tax_sal emp.sal%TYPE;--交税工资
 v_tax emp.sal%TYPE;--交税金额
begin
  OPEN c_emp;
  LOOP
  --循环取出EMP表每一行员工记录
    fetch c_emp into v_emp;
    exit when c_emp%NOTFOUND;
  --计算员工应交税金额TAX
    v_total := v_emp.sal+NVL(v_emp.comm,0);
    v_tax_sal := v_total-3500;
  --判断区间
    if v_tax_sal<=0 then
      v_tax :=0;
    elsif v_tax_sal<1500 then
      v_tax := v_tax_sal*0.03;
    elsif v_tax_sal<4500 then
      v_tax := v_tax_sal*0.1-105;
    elsif v_tax_sal<9000 then
      v_tax := v_tax_sal*0.2-555;
    else
      v_tax := v_tax_sal*0.25-1005;
    end if;
  --将EMP_TAX所需的字段值写入INSERT
    insert into EMP_TAX(id,empno,
     ename,sal,tax,tax_date) 
    values(tax_seq.nextval,v_emp.empno,
     v_emp.ename,v_total,v_tax,sysdate);
  END LOOP;
  CLOSE c_emp;
  commit;--提交操作
end;

 

标签:dbms,sal,--,输入输出,循环,put,output,line,方法
From: https://www.cnblogs.com/bky-wang/p/18125057

相关文章

  • 游标,触发器,循环复习
    ----for循环---------------------------------------FOR...in...LOOPENDLOOP;BEGINFORiIN1..10LOOPdbms_output.put_line(i);ENDLOOP;END;问题1到50?3到40?----while循环----------------------------------WHILE...LOOPEND......
  • java中add()和put()方法区别?
    在Java中,add()和put()方法常用于不同的数据结构中,并各自具有特定的用途和语义。下面我们来详细讨论一下这两种方法的主要区别:List接口中的add()方法:add()方法在Java的List接口(以及它的实现类,如ArrayList和LinkedList)中非常常见。这个方法用于向列表的末尾添加一个元素。例如:j......
  • 【CRC校验方法】+【FPGA实现(发送端)】
    书接上回:https://www.cnblogs.com/VerweileDoch/p/18105959发送端的逻辑和接收端类似,但是需要进行八位内的逆运算和取反:always@(posedgesys_clk)beginif(sys_rst_n==1'b0)beginr1_crc_value<=32'h0;endelseif(crc_cycle==1'b1......
  • C语言分支语句和循环语句(非常详细的分支循环讲解)
    目录选择语句if-else语句if嵌套switch语句逻辑操作符!逻辑非&&逻辑与||  逻辑或循环语句while循环do-while循环for循环break和continue语句 break语句continue语句选择语句if-else语句if语句的语法形式if(表达式){语句}在C语言中非0为真,0为假......
  • 函数方法
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacex180821{classProgram{staticvoidMain(string[]args);////很多的类方法,其中math//Console.WriteLine(Math.Abs(-22......
  • 类和方法
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacex类和方法_19_4_9{publicclassstu{//字段--值--与普通的变量类型--但要有权限//为了数据的安全,一个班所有字段都是私有的privates......
  • C语言循环结构综合案例1
    昨天我们复习了了选择结构的综合案例,那么我们今天开始复习循环结构。循环结构的内容比较多,所以我会将内容分为两天给大家展示,那么今天的实例题目也会比较多一些,所以也请各位能够耐心完成学习我列于文中一些小题,在独立完成理解后,我相信大家对C语言的学习和理解也会有一些全新的......
  • 输入输出
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacex180821汪敏{classProgram{staticvoidMain(string[]args){/*floata=15.6f,b=87.7f;\Stringt;......
  • 循环
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace_0821汪敏{classProgram{staticvoidMain(string[]args){/*intt=0;//计数器for(inti=0;i<=200;i++......
  • 嵌套循环
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace_1808_21_汪敏{classProgram{staticvoidMain(string[]args){//for(intj=1;j<=10;j++)//外层循环//{......