--第一个PL/SQL程序declare var_empname  varchar2(20) ;beginselect empname  into var_empname from  employee    where empid=&param_empid;    dbms_output.put_line(var_empname);end;--rowtypedeclarerow_result employee%rowtype;beginselect *  into row_result from employee where empid=&param_empid;dbms_output.put_line(row_result.empid||'-'||row_result.empname||'--'||row_result.Salary);end;---------------------------Day1203练习----------------------------------------1. 圆周率PI 假定取常量3.14 ,让用户输入圆的半径,用PL/SQL 程序计算出圆的面积,--并输出到控制台。declareconstant_PI  number(3,2):=3.14;var_r number:=&param_r;begindbms_output.put_line('圆的面积是'||round(constant_PI*var_r*var_r,3));end;--2.用户输入的某员工号查询出该员工所在的部门,--根据其所在部门的不同,修改工资。比如:如果部门编号(自己定)是10,--该部门全体员工的工资工资改为1000;如果部门编号是20,工资改为1200;--如果部门编号是30,工资定为1500;以此类推...如果都不满足,工资定为1800。--分别用if和case语句实现--casedeclarevar_deptid employee.deptid%type;row_result employee%rowtype;beginselect * into row_result from employee where empid=&param_empid;var_deptid:=row_result.deptid;case var_deptid  when 110 then update employee set Salary=1000 where deptid=110;  when 120 then update employee set Salary=1200 where deptid=120;  when 130 then update employee set Salary=1500 where deptid=130; else  update employee set Salary=1800 ;  end case;end;select * from employee--ifdeclarevar_deptid employee.deptid%type;row_result employee%rowtype;beginselect * into row_result from employee where empid=&param_empid;var_deptid:=row_result.deptid;if var_deptid=110 then update employee set Salary=180 where deptid=110; elsif var_deptid=120 then      update employee set Salary=1200 where deptid=120; elsif var_deptid=130 then update employee set Salary=1500 where deptid=130; else  update employee set Salary=1800 ;  end if;end;-------------------select * from employee---4:属性数据类型type,if..then..else....end if--根据用户用户输入的员工号,查询某个员工的工资,--如果工资大于某个数(比如1000),将该员工工资减100,否则加100。select * from employeedeclare var_sal employee.salary %type;beginselect Salary into var_sal from employee where empname='武器大师';if var_sal <600 then  update employee set Salary =Salary+100 where empname='武器大师';  else   update employee set Salary =Salary-100 where empname='武器大师'; end if; end;--5: case..when..else--输入一个字母A、B、C分别输出对应的级别信息。具体为:--A对应“Excellent”,B对应“Very Good”, C对应"Not Bad",其他则对应“No Such Data”declarevar_zimu varchar2(20):='&ss';var_result varchar2(20);beginvar_result:=case var_zimu when 'A' then 'Excellent'when 'B' then 'Very Good'when 'C' then 'Not Bad'else 'No Such Data'end;dbms_output.put_line(var_result);end;--6:从1到100的累加 (循环结构)while+loopdeclarev_num integer :=1;v_sum integer :=0;beginwhile v_num<=100  loop  v_sum := v_sum+v_num;  dbms_output.put(v_num);  if v_num<10  then    dbms_output.put('+');  end if;  v_num:=v_num+1;  end loop;  dbms_output.put('=');   dbms_output.put_line(v_sum);end;--6:从1到100的累加 for...in.+loopdeclare   var_num integer;  var_sum integer:=0;begin for var_num in 1..100loop   var_sum :=var_sum+var_num;   dbms_output.put(var_num);   if var_num<100 then    dbms_output.put('+');   end if;end loop;dbms_output.put('=');dbms_output.put_line(var_sum);end;----无参存储过程create or replace procedure getempCountas  empcount  number;  begin  select count(*) into empcount from  employee;  dbms_output.put_line('总共有'||empcount||'个员工');  end;---call getempcount();-----只带输入参数的存储过程create or replace procedure showsalarybyempid(param_empid number)asvar_salary number;begin  select salary  into var_salary from employee where empid=param_empid;  dbms_output.put_line('该员工的工资为:'||var_salary);end; --call showsalarybyempid(1);--带输入和输出参数的存储过程create or replace procedure showempbyempid(param_empid number,oneemp out employee%rowtype)as beginselect * into oneemp from employee where empid=param_empid;end;---declarerow_oneemp employee%rowtype;begin  showempbyempid(&empid,row_oneemp);--实际参数 dbms_output.put_line(row_oneemp.empname||'--'||row_oneemp.hiredate); end;--cursor(游标)对结果集的操作declare cursor  cur_emp(minSalary in number,maxSalary in number)is select * from employee where Salary>=minSalary and Salary<=maxSalary; oneemp employee%rowtype;begin    open cur_emp(500,800);    fetch cur_emp into oneemp;   while cur_emp%found      loop     dbms_output.put_line(oneemp.empname||'--'||oneemp.Salary);     fetch cur_emp into oneemp;      end loop; close cur_emp;end;--trigger(触发器)create or replace trigger tri_department_id before                  insert on department for each row       begin       select seq_department.nextval  into :new.departid         from dual;       end;              ------------insert into department(departname,remark) values('打野部','先buff')              select * from department              ------------------------              select * from employee----分页 先有结果集再有rownum--考虑排序必须得有三层查询select * from (select rownum num,r.* from(select * from employee order by empid) r where rownum <=7)where num>=3;------select * from (select rownum num,e.* from employee e where rownum <=7)where num>=3