oracle sql & pl/sql基础教程,ORACLE_PLSQL_基础教程

L/SQL

一、PLSQL 变量

set serveroutput on;

declare v_num number :=0;--变量名一般以v开头

begin

v_num:=2/v_num; --这句因为除数为0会报错。

dbms_output.put_line(v_num);

end;

/

异常处理:

set serveroutput on;

declare v_num number :=0;

begin

v_num:=2/v_num;

dbms_output.put_line(v_num);

exception

when others then

dbms_output.put_line('错误');

end;

/

变量类型

binary_integer: 整数,主要用来计数而不是用来表示字段类型

number 数字类型

char 定长字符串

varchar2 变长字符串

date 日期

long 长字符串,最长2G

boolean 布尔类型,可以取值为true,false ,和null。

声明变量:

set serveroutput on;

declare v_num number :=0;

v_bl boolean :=false;

begin

dbms_output.put_line('s');

end;

/

注意:declare 放在变量声明的最前面,无论声明多少个变量仅可放一个declare

boolean 类型的变量是不能通过dbms_output.put_line()打印出来的。

得到表中字段类型

%type

set serveroutput on;

declare v_num number :=0;

v_blnum v_num%type := v_num;

begin

dbms_output.put_line(v_blnum);

end;

/

Record 类型:

set serveroutput on;

declare type type_record is record

(

name1 varchar(20),

age number

);

v_type_record type_record;

begin

v_type_record.name1:='nihaoname';

v_type_record.age:=23;

dbms_output.put_line(v_type_record.name1||' '||v_type_record.age);

end;

/

使用%rowtype声明record 变量(将对应表的所有类型作为该变量的成员)

set serveroutput on;

declare

v_school school%rowtype;

begin

v_school.name1:='nama';

v_school.age:='age';

dbms_output.put_line(v_school.name1||v_school.age);

end;

二、PL/SQL中的sql

1.       Insert 语句

Insert 语句必须要有返回值且只有一条返回。

Insert 语句中必须有into 将查到的数据放入到对应的变量中。注意into两边的值的个数要相同。

Into 后可以传入一个record类型的变量,用于将查询出来的值放入到该变量中。

set serveroutput on;

declare

v_school  school%rowtype;

begin

select name1 ,age into v_school from school;

dbms_output.put_line(v_school.name1);

end;

/

2.       Update 语句

sql%rowcount 得到刚刚执行sql影响的行数。

set serveroutput on;

declare

v_school  school%rowtype;

begin

update school set name1='tes2t' where name1='s' ;

dbms_output.put_line(sql%rowcount||'ss');

commit;

end;

/

3.       执行DDL 语句

在pl/sql 中执行sql语句方法

三、判断语句

set serveroutput on;

declare

v_num number(20) :=1399;

begin

if (v_num <1200) then

dbms_output.put_line('low');

elsif(v_num<1800) then

dbms_output.put_line('middle');

else

dbms_output.put_line('high');

end if;

end;

/

四、循环

set serveroutput on;

declare

i number(20) :=1;

begin

loop

dbms_output.put_line('nihao'||i);

i:=i+1;

exit when (i>=5);

end loop;

end;

/

set serveroutput on;

declare

i number(20) :=1;

begin

while (i<=5) loop

dbms_output.put_line('nihao'||i);

i:=i+1;

end loop;

end;

/

正序for循环

set serveroutput on;

declare

i number(20) :=1;

begin

for a in 1..9 loop

dbms_output.put_line(a);

end loop;

end;

/

反序for循环

begin

for a in reverse 1..9 loop

dbms_output.put_line(a);

end loop;

end;

/

注意:无论是正序还是反序for循环 循环的数字必须是从小到大排列如1..9

五、 错误处理

set serveroutput on;

declare

i number(20) :=1;

v_name varchar(20) :='';

begin

select name1 into v_name from school where name1='ss';

exception

when no_data_found then

dbms_output.put_line('没有数据');

when others then

begin

dbms_output.put_line('未知错误');

end;

end;

/

SQLCODE SQLERRM 关键字代表出错代码和出错信息。

set serveroutput on;

declare

i number(20) :=1;

v_name varchar(20) :='';

begin

select name1 into v_name from school where name1='ss';

exception

when no_data_found then

dbms_output.put_line('没有数据'||SQLERRM || SQLCODE);

when others then

begin

dbms_output.put_line('未知错误');

end;

end;

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值