ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle学习-plsql

oracle学习-plsql

原创 Linux操作系统 作者:ora10000 时间:2013-04-21 11:42:56 0 删除 编辑

一、条件判断:

if     。。。。 then

  end if;

  if  。。。then

    else   

      。。。。;

       end if;

if 。。 then

     elsif   。。。

         elsif  。。。

           endif;

case

      when 。。。 then 。。。;

       when 。。。 then 。。。;

        else  。。。;

       end case;

二、循环:

loop 

   。。。;

     end loop;

while 。。。loop

    。。。;

     end loop;

for i in 1..100 loop

   。。。;

     end loop;

三、1到100求和:

1、

declare
   v_a number;
   v_sum number :=0;
begin
   for v_a in 1..100 loop
     v_sum :=v_a+v_sum;
     end loop;
   dbms_output.put_line(v_sum);
  end;

2、

declare
   v_a number :=0;
   v_sum number :=0;
begin
   while v_a <=100 loop
     v_sum :=v_a+v_sum;
      v_a :=v_a+1;
     end loop;
   dbms_output.put_line(v_sum);
  end;

3、

declare
   v_a number :=1;
   v_sum number :=0;
begin
   loop
     v_sum :=v_a+v_sum;
      v_a :=v_a+1;
      if v_a > 100 then
        exit;
        end if;
     end loop;
   dbms_output.put_line(v_sum);
  end;
  4、

declare
   v_a number :=1;
   v_sum number :=0;
begin
   loop
     v_sum :=v_a+v_sum;
      v_a :=v_a+1;
        exit when v_a > 100; 
     end loop;
   dbms_output.put_line(v_sum);
  end;
 

四、plsql块在sqlplus中执行:

SQL> declare
  2     v_a number :=1;
  3     v_sum number :=0;
  4  begin
  5     loop
  6       v_sum :=v_a+v_sum;
  7        v_a :=v_a+1;
  8          exit when v_a > 100;
  9       end loop;
 10     dbms_output.put_line(v_sum);
 11    end;
 12  /

PL/SQL 过程已成功完成。

SQL>

修改serveroutput参数可以在显示出结果:

show serveroutput;

set serveroutput on;

永久生效:

在 C:\oracle\product\10.2.0\db_1\sqlplus\adminglogin.sql 加上set serveroutput on;

如果是远程客户端连接,需要改客户端相应的文件。

SQL> declare

  2     v_a number :=1;
  3     v_sum number :=0;
  4  begin
  5     loop
  6       v_sum :=v_a+v_sum;
  7        v_a :=v_a+1;
  8          exit when v_a > 100;
  9       end loop;
 10     dbms_output.put_line(v_sum);
 11    end;
 12  /
5050

PL/SQL 过程已成功完成。

SQL>

五、对象:过程

创建过程

create procedure proce_1
is
--declare
   v_a number :=1;
   v_sum number :=0;
begin
   loop
     v_sum :=v_a+v_sum;
      v_a :=v_a+1;
        exit when v_a > 100; 
     end loop;
   dbms_output.put_line(v_sum);
  end;

修改:

create or replace procedure proce_1
is
--declare
   v_a number :=1;
   v_sum number :=0;
begin
   loop
     v_sum :=v_a+v_sum;
      v_a :=v_a+1;
        exit when v_a > 100; 
     end loop;
   dbms_output.put_line(v_sum);
  end;

sqlplus中执行:

>execute proce_1;

过程加参数:


create or replace procedure proce_1(p_name in varchar2,p_loc out varchar2)
is 
begin
  update dept set dname = p_name,loc = p_loc where deptno = 10;

   select loc into p_loc from dept where dname = p_name;
  commit;
  dbms_output.put_line(p_loc);
  end proce_1;

sqlplus中执行:

SQL> declare
  2   v_loc varchar2(20);
  3  begin
  4   proce_1(p_name=>'test2',p_loc=>v_loc);
  5  end;
  6  /
BEIJING

PL/SQL 过程已成功完成。

SQL>

  创建包:

create or replace package pack_1 is
 
  --type is ;
  v_pi constant number :=3.14;
  v_r number :=100;
  function fun_long(p_r in number) return number;
  procedure proce_1(p_name in varchar2,p_loc out varchar2);

end pack_1;

create or replace package body pack_1 is

  -- Private type declarations
--  type is ;
 
  -- Private constant declarations
  -- constant := ;

  -- Private variable declarations
  -- ;

  -- Function and procedure implementations
  function fun_long(p_r in number)
    return number
    is
    begin
      return 2*p_r*v_pi;
      end fun_long;
  
  procedure proce_1(p_name in varchar2,p_loc out varchar2)
is 
begin
  p_Loc :='shanxi';
  update dept set dname = p_name where deptno = 10;
   select loc into p_loc from dept where dname = p_name;
  commit;
  dbms_output.put_line(p_loc);
  end proce_1;   
end pack_1;

执行:
SQL> exec dbms_output.put_line(pack_1.fun_long(2));
12.56

PL/SQL 过程已成功完成。

SQL>

六。游标

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28813052/viewspace-758985/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-04-20

  • 博文量
    5
  • 访问量
    9471