PLSQL示例

##1.最简单的plsql

例子:

declare 			--开始
x varchar2(10);	--声明变量
begin				--开始标识
x:='This is ..';		--给变量赋值
dbms_output.put_line('x的值为:'||x);		--输出x的值
end;				--结束标识
/

在plsql中用||连接两个字符 等于java中的+符号

设置服务器的plsql显示结果

set serveroutput on size 1000;
--或直接写:
set serveroutput on;

再执行/ 可以看到这个结果 x的值为: This is ..

dbms_output.put_line('x的值为:'||x); 等同于 dbms_output.put('x的值为:'||x); dbms_output.new_Line;

##2.分支语句

###1.if分支

If… then
Elsif … then
Else …
End if

例子1:

declare
a number:=3;
b number;
begin
if a<3 then b:=1;
elsif a>3 then b:=5;
else b:=3;
end if;
dbms_output.put_line(b);
end;
/

例子2:

declare
a number;
b varchar2(10);
begin
a:=4;
if a=1 then b:='a';
elsif a=2 then b:='b';
else b:='c';
end if;
dbms_output.put_line(b);   --输出结果为:c
end;
/

###2.case分支

	Case 
	When … then …
	Else 
    End case

例子:

declare
a number;
b varchar2(10);
begin
a:=2;
case
when a=1 then b:='a';
when a=2 then b:='b';
when a=3 then b:='c';
else b:='others';
end case;
dbms_output.put_line(b);
end;
/

##3.循环语句

###1.基本循环(loop)

Loop … end loop

示例1:

declare
x number ;
begin
x:=0;
loop
x:=x+1;
if x>5 then
exit;
end if;
dbms_output.put_line('内x='|| x);
end loop;
dbms_output.put_line('外x='|| x);
end;
/
/*结果
内x=1	内x=2	内x=3
内x=4	内x=5	外x=6
*/

示例2:

declare
x number;
begin
x:=0;
loop
x:=x+1;
exit when x>=3;	--当x大于等于3的时候跳出
dbms_output.put_line('内x='|| x);
end loop;
dbms_output.put_line('外x='||x);
end ;
/
/*结果
内x=1
内x=2
外x=3
*/

###2.while循环

While expression loop… end loop;

示例1:

declare
x number;
begin
x:=0;
while x<=3 loop
x:=x+1;
dbms_output.put_line('内x='||x);
end loop;
dbms_output.put_line('外x='||x);
end;
/

示例2:

declare
 x number;
 begin
 x:=0;
 while x<=6 loop
 x:=x+1;
 dbms_output.put_line('内x='||x);
 exit when x=3; 	--满足条件跳出循环
 end loop;
 dbms_output.put_line('外x='||x);
 end;
 /

###3.for循环

For counter in [reverse] start_value..end_value loop
…
End loop;

示例1:

begin
 for i in 1..6 loop
 dbms_output.put_line('i='|| i);
 end loop;
 dbms_output.put_line('end of for loop');
 end;
 /
/*结果
i=1
i=2
i=3
i=4
i=5
i=6
end of for loop
*/

示例2:

begin
for i in reverse 1..5 loop
dbms_output.put_line(i);
end loop;
end;
/

/*结果
5
4
3
2
1
*/

###4.Goto的使用

declare
x number;
begin
x:=0;
<<repeat_loop>>
x:=x+1;
dbms_output.put_line(x);
if x<3 then
goto repeat_loop;
end if;
end;
/
/*结果
1
2
3
*/

4.异常处理

Exception when .. then .. 

示例1:

declare
test varchar2(10);
begin
select ename into test from emp where empno=55;
dbms_output.put_line(test);

exception 
when No_DATA_FOUND then
dbms_output.put_line('没有找到数据');
end;
/

示例2:

declare
 test varchar2(10);
 begin
 select ename into test from emp ;
 dbms_output.put_line(test);
 exception
 when no_data_found then
 dbms_output.put_line('没有找到数据!');
 when too_many_rows then
 dbms_output.put_line('返回的数据行太多!');
 when others then
 dbms_output.put_line('其他问题!');
 end;
 /

示例3:

declare
ename varchar2(10);
begin
select ename into ename from emp where empno=33;
exception
when others then
dbms_output.put_line('出错了!');
end;
/

转载于:https://my.oschina.net/csmw00/blog/678281

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PL/SQL编程 pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入式sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误。这样使得他的功能变的更强大。缺点是移植性不好。 编写一个存储过程,向表中添加数据。 1. create table mytest (name varchar2(30),passwd varchar2(30)); 2. create or replace procedure xxc_pro1 is begin insert into mytest values ('小红','m123'); end; 3. 调用过程 exec 过程名(参数1,参数2…)或call 过程名参数1,参数2…) ① exec xxc_pro1; 或者是 ② call xxc_pro1; pl/sql可以做什么? 块:包括过程、函数、触发器、包。 编写规范: 1. 注释 --:单行注释 eg:select * from emp where empno=7788;--取得员工信息 /*……*/多行注释 2. 表示符号(变量)的命名规范: ① 当定义变量时,建议用v_作为前缀:v_ename ② 当定义常量时,建议用c_作为前缀:c_rate ③ 当定义游标时,建议用_cursor作为后缀:emp_cursor ④ 当定义例外时,建议用e_作为前缀:e_error 块(block)是pl/sql的今本程序单元,编写pl/sql程序实际上就是在编写pl/sql块;pl/sql块由三部分组成:定义部分,执行部分,例外处理部分。 declare --可选部分 /*定义部分:定义常量,变量,游标,例外,复杂数据类型*/ begin --必选部分 /*执行部分:要执行的pl/sql语句和sql语句*/ exception --可选部分 /*例外处理部分:处理运行的各种错误*/ 实例1:只包含执行部分的pl/sql块 SQL> set serveroutput on --打开输出 SQL> begin 2 dbms_output.put_line('hello'); 3 end; 4 / 说明:dbms_output是oracle提供的包,该包包含一些过程,put_line就是其中之一。 实例2:包含定义部分和执行部分 SQL> declare 2 v_ename varchar2(5); 3 begin 4 select ename into v_ename from emp where empno = &no; 5 dbms_output.put_line('雇员名'||v_ename); 6 end; 7 / 说明:&:从控制台输入变量,会弹出一个对话框。 实例3.同时输出雇员名和工资 SQL> declare 2 v_ename varchar2(20); 3 v_sal number(10,2); 4 begin 5 select ename,sal into v_ename,v_sal from emp where empno=&no; 6 dbms_output.put_line('雇员名:'||v_ename||' 工资:'||v_sal); 7 end; 8 / 包含定义,执行,和例外处理的pl/sql块。 实例4.当输入的员工号不存在时 SQL> declare 2 v_ename varchar2(20); 3 v_sal number(10,2); 4 begin 5 select ename,sal into v_ename,v_sal from emp where empno =&no; 6 dbms_output.put_line('雇员名:'||v_ename||' 工资:'||v_sal); 7 exception --异常处理部分 8 when no_data_found then 9 dbms_output.put_line('请输入正确的员工号!'); 10 end; 11 / 以上为块的基础,下面来介绍块的各个组成:过程,函数,触发器,包。 过程 过程用于执行特定的操作,当执行过程的时候,可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数,可以讲数据输入到执行部分,通过使用输出参数,可以将执行部分的数据输出到应用环境,在pl/sql中可以使用create procedure命令来创建过程。 编写一个存储过程,可以输入雇员名和新工资来改变员工工资。 --案例 create or replace procedure xxc_pro3(newname in varchar2,newsal in number) is begin update emp set sal=newsal where ename=newname; end;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值