首页 > Linux操作系统 > Linux操作系统 > oracle学习-plsql
一、条件判断:
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
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
-- Private constant declarations
--
-- 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/ ,如需转载,请注明出处,否则将追究法律责任。