zoukankan      html  css  js  c++  java
  • PLSQL基本知识

      1 create table student (
      2    xh number(4), --学号
      3    xm varchar2(20), --姓名
      4    sex char(2), --性别
      5    birthday date, --出生日期
      6    sal number(7,2) --奖学金
      7 );
      8 /*
      9 *第一种写法
     10 */
     11 declare 
     12   v_name varchar(100);
     13   v_xh number :=0;
     14 begin 
     15   select xm,xh into v_name,v_xh  from student where xh=3;
     16   dbms_output.put_line(v_name||'------------>'||v_xh);
     17 end;
     18 /*
     19 *第二种写法
     20 */
     21 declare 
     22   type stu_record is record(
     23     v_name varchar(100),
     24     v_xh number :=0
     25   );
     26   v_interface stu_record;
     27 begin 
     28   select xm,xh into v_interface  from student where xh=6;
     29   dbms_output.put_line(v_interface.v_name||'------------>'||v_interface.v_xh);
     30 end;
     31 
     32 
     33 
     34 /*
     35 *if else
     36 */
     37 
     38 declare 
     39     v_xh student.xh%TYPE;
     40     v_temp varchar(30);
     41 begin
     42   select xh into v_xh from student where xh=23;
     43   if v_xh<6 then 
     44     v_temp:='xh小于6';
     45   elsif v_xh=6 then 
     46     v_temp:='xh等于6';
     47   else 
     48     v_temp:='xh大于6';
     49   end if;
     50   dbms_output.put_line(v_temp);
     51 end;
     52 
     53 /*
     54 *case when then end
     55 */
     56 
     57 declare 
     58     v_xm varchar(30);
     59     v_temp varchar(30);
     60 begin
     61   select xm into v_xm from student where xh=2;
     62   v_temp:=''
     63   case v_xm when 'john' then 'xh是偶数'      
     64             when 'martin' then 'xh是奇数'      
     65             else 'null'   
     66   end;
     67   dbms_output.put_line(v_temp);
     68 end;
     69 
     70 /**
     71 *loop 循环
     72 */
     73 declare 
     74   --
     75   v_i number(5) :=1;
     76 begin
     77  loop  
     78    dbms_output.put_line(v_i);
     79  --
     80  exit when v_i>=100;
     81    --
     82    v_i:=v_i+1;
     83  end loop;
     84 end;
     85 
     86 /*
     87 *while
     88 */
     89 declare 
     90   v_i number(5) :=1;
     91 begin
     92   while v_i <=100 loop 
     93     dbms_output.put_line('--------------->'||v_i);
     94     v_i:=v_i+1;
     95   end loop;
     96 end;
     97 
     98 /*
     99 *for
    100 */
    101 begin
    102   for c in 1..100 loop 
    103     dbms_output.put_line('c'||c);
    104   end loop;
    105 end;
    106 
    107 
    108 
    109 /*
    110 *游标
    111 */
    112 declare 
    113   v_name student.xm%Type;
    114   --定游标
    115   cursor stu is select xm from student;
    116 begin
    117   --打开游标
    118   open stu;
    119   --提取游标
    120   fetch stu into v_name;
    121   while stu%found loop
    122     dbms_output.put_line(v_name);
    123     fetch stu into v_name;
    124   end loop;
    125 end;
    126 /*
    127 *练习
    128 */
    129 --游标练习
    130 declare 
    131   type stu_record is record(
    132     v_xm varchar(100),
    133     v_xh number :=0
    134   );
    135   v_student stu_record;
    136   --定游标
    137   cursor stu is select xm,xh from student;
    138 begin
    139   --打开游标
    140   open stu;
    141   --提取游标
    142   fetch stu into v_student;
    143   while stu%found loop
    144     dbms_output.put_line(v_student.v_xh||'---------------->'||v_student.v_xm);
    145     fetch stu into v_student;
    146   end loop;
    147   --关闭游标
    148   close stu;
    149 end;
    150 /**
    151 *for代替游标
    152 */
    153 declare 
    154   --定游标
    155   cursor stu is select xm,xh from student;
    156 begin
    157   for c in stu loop 
    158     dbms_output.put_line(c.xh||'---------------->'||c.xm);
    159   end loop;
    160 end;
    161 
    162 
    163 /*
    164 *函数
    165 */
    166 create or replace function hello(v_xm varchar2)
    167 return varchar2 
    168 is
    169 begin 
    170   return '===========hello=============='||v_xm;
    171 end;
    172 select hello('王正和') from dual;
    173 --练习
    174 --1
    175 create or replace function get_sysadte
    176 return date 
    177 is
    178 begin 
    179   return sysdate;
    180 end;
    181 select get_sysadte from dual;
    182 --2
    183 create or replace function add_parm(v_num1 number,v_num2 number)
    184 return number 
    185 is
    186  v_sum number(10);
    187 begin 
    188   v_sum:=v_num1+v_num2;
    189   return v_sum;
    190 end;
    191 select add_parm(100,300) from dual;
    192 /*
    193 *存过
    194 */
    195 create or replace procedure deal_hello
    196 is 
    197 begin 
    198   dbms_output.put_line('---------------->hello');
    199 end;
    200 --1
    201 create or replace procedure deal_sum_xh
    202 is 
    203 v_sum number(20) :=0;
    204 cursor stu is select xh,xm from student;
    205 begin 
    206   for c in stu loop
    207      v_sum:=c.xh+v_sum;
    208      dbms_output.put_line('<-----数据----------->'||c.xh);
    209   end loop;
    210   dbms_output.put_line('-----最终数据----------->'||v_sum);
    211 end;
  • 相关阅读:
    poj 1269(两条直线交点)
    poj 2398(叉积判断点在线段的哪一侧)
    poj 2318(叉积判断点在线段的哪一侧)
    HDU 5650 so easy
    POJ 1328 Radar Installation
    POJ 1017 Packets
    POJ 3190 Stall Reservations
    CodeForces 652A Gabriel and Caterpillar
    CodeForces 652B z-sort
    CodeForces 652C Foe Pairs
  • 原文地址:https://www.cnblogs.com/2070393244com/p/13138691.html
Copyright © 2011-2022 走看看