PL/SQL语言基础
PL/SQL语言基础
/********************************数据类型*************************************/
%rowtype (行对象类型使用)
变量名 表名%rowtype
%type
变量名 表名.列名%TYPE=默认值
在使用dbms_output.put_line()打印输出内容时需先设置set serveroutput on参数。
/*****************例子******************/
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 begin
7 a:=10;
8 b:='Axiao';
9 select empno into no from emp where empno=7369;
10 select * into e from emp where empno=7788;
11 dbms_output.put_line(a);
12 dbms_output.put_line(b);
13 dbms_output.put_line(no);
14 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
15* end;
16 /
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 begin
7 a:=10;
8 b:='Axiao';
9 select empno into no from emp where empno=7369;
10 select * into e from emp where empno=7788;
11 dbms_output.put_line(a);
12 dbms_output.put_line(b);
13 dbms_output.put_line(no);
14 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
15* end;
16 /
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> /
10
Axiao
7369
7788,SCOTT,ANALYST
SQL> /
10
Axiao
7369
7788,SCOTT,ANALYST
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 begin
9 a:=10;
10 b:='Axiao';
11 select empno into no from emp where empno=7369;
12 select * into e from emp where empno=7788;
13 t_s(3):=10;
14 t_s(5):=20;
15 dbms_output.put_line(a);
16 dbms_output.put_line(b);
17 dbms_output.put_line(no);
18 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
19 dbms_output.put_line(t_s(3));
20 dbms_output.put_line(t_s(5));
21* end;
SQL> /
10
Axiao
7369
7788,SCOTT,ANALYST
10
20
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 begin
9 a:=10;
10 b:='Axiao';
11 select empno into no from emp where empno=7369;
12 select * into e from emp where empno=7788;
13 t_s(3):=10;
14 t_s(5):=20;
15 dbms_output.put_line(a);
16 dbms_output.put_line(b);
17 dbms_output.put_line(no);
18 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
19 dbms_output.put_line(t_s(3));
20 dbms_output.put_line(t_s(5));
21* end;
SQL> /
10
Axiao
7369
7788,SCOTT,ANALYST
10
20
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=7369;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject='语文';
20 r_s.score=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28* end;
SQL> ed
已写入文件 afiedt.buf
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=7369;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject='语文';
20 r_s.score=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28* end;
SQL> ed
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=7369;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28* end;
SQL> /
10
Axiao
7369
7788,SCOTT,ANALYST
10
20
语文,70
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=7369;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28* end;
SQL> /
10
Axiao
7369
7788,SCOTT,ANALYST
10
20
语文,70
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=9999;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28 exception
29 when no_data_found then
30 dmbs_output.put_line('没有找到合适的记录');
31 when too_many_rows then
32 dmbs_output.put_line('找到太多的确记录');
33* end;
SQL> /
dmbs_output.put_line('没有找到合适的记录');
*
ERROR 位于第 30 行:
ORA-06550: 第 30 行, 第 6 列:
PLS-00201: 必须说明标识符 'DMBS_OUTPUT.PUT_LINE'
ORA-06550: 第 30 行, 第 6 列:
PL/SQL: Statement ignored
ORA-06550: 第 32 行, 第 6 列:
PLS-00201: 必须说明标识符 'DMBS_OUTPUT.PUT_LINE'
ORA-06550: 第 32 行, 第 6 列:
PL/SQL: Statement ignored
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=9999;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28 exception
29 when no_data_found then
30 dmbs_output.put_line('没有找到合适的记录');
31 when too_many_rows then
32 dmbs_output.put_line('找到太多的确记录');
33* end;
SQL> /
dmbs_output.put_line('没有找到合适的记录');
*
ERROR 位于第 30 行:
ORA-06550: 第 30 行, 第 6 列:
PLS-00201: 必须说明标识符 'DMBS_OUTPUT.PUT_LINE'
ORA-06550: 第 30 行, 第 6 列:
PL/SQL: Statement ignored
ORA-06550: 第 32 行, 第 6 列:
PLS-00201: 必须说明标识符 'DMBS_OUTPUT.PUT_LINE'
ORA-06550: 第 32 行, 第 6 列:
PL/SQL: Statement ignored
SQL> ed
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=9999;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28 exception
29 when no_data_found then
30 dbms_output.put_line('没有找到合适的记录');
31 when too_many_rows then
32 dbms_output.put_line('找到太多的确记录');
33* end;
SQL> /
没有找到合适的记录
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where empno=9999;
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28 exception
29 when no_data_found then
30 dbms_output.put_line('没有找到合适的记录');
31 when too_many_rows then
32 dbms_output.put_line('找到太多的确记录');
33* end;
SQL> /
没有找到合适的记录
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where job='CLERK';
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28 exception
29 when no_data_found then
30 dbms_output.put_line('没有找到合适的记录');
31 when too_many_rows then
32 dbms_output.put_line('找到太多的确记录');
33* end;
SQL> /
找到太多的确记录
2 a integer;
3 b varchar2(10);
4 no emp.empno%type;
5 e emp%rowtype;
6 type tab_s is table of integer index by binary_integer;
7 t_s tab_s;
8 type rec_s is record
9 (subject varchar2(10),
10 score integer);
11 r_s rec_s;
12 begin
13 a:=10;
14 b:='Axiao';
15 select empno into no from emp where job='CLERK';
16 select * into e from emp where empno=7788;
17 t_s(3):=10;
18 t_s(5):=20;
19 r_s.subject:='语文';
20 r_s.score:=70;
21 dbms_output.put_line(a);
22 dbms_output.put_line(b);
23 dbms_output.put_line(no);
24 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
25 dbms_output.put_line(t_s(3));
26 dbms_output.put_line(t_s(5));
27 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
28 exception
29 when no_data_found then
30 dbms_output.put_line('没有找到合适的记录');
31 when too_many_rows then
32 dbms_output.put_line('找到太多的确记录');
33* end;
SQL> /
找到太多的确记录
PL/SQL 过程已成功完成。
SQL> ED
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1427);
15 begin
16 a:=10;
17 b:='Axiao';
18 c:=a/0;
19 select empno into no from emp where job='CLERK';
20 select * into e from emp where empno=7788;
21 t_s(3):=10;
22 t_s(5):=20;
23 r_s.subject:='语文';
24 r_s.score:=70;
25 dbms_output.put_line(a);
26 dbms_output.put_line(b);
27 dbms_output.put_line(no);
28 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
29 dbms_output.put_line(t_s(3));
30 dbms_output.put_line(t_s(5));
31 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
32 exception
33 when no_data_found then
34 dbms_output.put_line('没有找到合适的记录');
35 when too_many_rows then
36 dbms_output.put_line('找到太多的确记录');
37 when ee then
38 dbms_output.put_line('除0了!');
39* end;
SQL> /
declare
*
ERROR 位于第 1 行:
ORA-01476: 除数为 0
ORA-06512: 在line 18
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1427);
15 begin
16 a:=10;
17 b:='Axiao';
18 c:=a/0;
19 select empno into no from emp where job='CLERK';
20 select * into e from emp where empno=7788;
21 t_s(3):=10;
22 t_s(5):=20;
23 r_s.subject:='语文';
24 r_s.score:=70;
25 dbms_output.put_line(a);
26 dbms_output.put_line(b);
27 dbms_output.put_line(no);
28 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
29 dbms_output.put_line(t_s(3));
30 dbms_output.put_line(t_s(5));
31 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
32 exception
33 when no_data_found then
34 dbms_output.put_line('没有找到合适的记录');
35 when too_many_rows then
36 dbms_output.put_line('找到太多的确记录');
37 when ee then
38 dbms_output.put_line('除0了!');
39* end;
SQL> /
declare
*
ERROR 位于第 1 行:
ORA-01476: 除数为 0
ORA-06512: 在line 18
SQL> ed
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1427);
15 begin
16 a:=10;
17 b:='Axiao';
18 c:=a/0;
19 select empno into no from emp where job='CLERK';
20 select * into e from emp where empno=7788;
21 t_s(3):=10;
22 t_s(5):=20;
23 r_s.subject:='语文';
24 r_s.score:=70;
25 dbms_output.put_line(a);
26 dbms_output.put_line(b);
27 dbms_output.put_line(no);
28 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
29 dbms_output.put_line(t_s(3));
30 dbms_output.put_line(t_s(5));
31 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
32 exception
33 when others then
34 dbms_output.put_line(sqlcode);
35* end;
SQL> /
-1476
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1427);
15 begin
16 a:=10;
17 b:='Axiao';
18 c:=a/0;
19 select empno into no from emp where job='CLERK';
20 select * into e from emp where empno=7788;
21 t_s(3):=10;
22 t_s(5):=20;
23 r_s.subject:='语文';
24 r_s.score:=70;
25 dbms_output.put_line(a);
26 dbms_output.put_line(b);
27 dbms_output.put_line(no);
28 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
29 dbms_output.put_line(t_s(3));
30 dbms_output.put_line(t_s(5));
31 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
32 exception
33 when others then
34 dbms_output.put_line(sqlcode);
35* end;
SQL> /
-1476
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 begin
16 a:=10;
17 b:='Axiao';
18 c:=a/0;
19 select empno into no from emp where job='CLERK';
20 select * into e from emp where empno=7788;
21 t_s(3):=10;
22 t_s(5):=20;
23 r_s.subject:='语文';
24 r_s.score:=70;
25 dbms_output.put_line(a);
26 dbms_output.put_line(b);
27 dbms_output.put_line(no);
28 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
29 dbms_output.put_line(t_s(3));
30 dbms_output.put_line(t_s(5));
31 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
32 exception
33 when ee then
34 dbms_output.put_line('除0了!');
35 when others then
36 dbms_output.put_line(sqlcode);
37* end;
SQL> /
除0了!
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 begin
16 a:=10;
17 b:='Axiao';
18 c:=a/0;
19 select empno into no from emp where job='CLERK';
20 select * into e from emp where empno=7788;
21 t_s(3):=10;
22 t_s(5):=20;
23 r_s.subject:='语文';
24 r_s.score:=70;
25 dbms_output.put_line(a);
26 dbms_output.put_line(b);
27 dbms_output.put_line(no);
28 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
29 dbms_output.put_line(t_s(3));
30 dbms_output.put_line(t_s(5));
31 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
32 exception
33 when ee then
34 dbms_output.put_line('除0了!');
35 when others then
36 dbms_output.put_line(sqlcode);
37* end;
SQL> /
除0了!
PL/SQL 过程已成功完成。
/**************************************流程控制******************************************/
/*注:
1条件:
IF 条件 THEN
语句
ELSIF 条件 THEN
语句
ELSE
语句
END IF;
2循环:
LOOP
语句
[EXIT WHEN 条件]
END LOOP
3While循环
While 条件 LOOP
END LOOP
/************例子*****************/
1 declare
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 e1 exception;
16 begin
17 a:=0;
18 b:='Axiao';
19 if a=0 then
20 raise e1;
21 end if;
22 c:=a/0;
23 select empno into no from emp where job='CLERK';
24 select * into e from emp where empno=7788;
25 t_s(3):=10;
26 t_s(5):=20;
27 r_s.subject:='语文';
28 r_s.score:=70;
29 dbms_output.put_line(a);
30 dbms_output.put_line(b);
31 dbms_output.put_line(no);
32 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
33 dbms_output.put_line(t_s(3));
34 dbms_output.put_line(t_s(5));
35 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
36 exception
37 when ee then
38 dbms_output.put_line('除0了!');
39 when e1 then
40 dbms_output.put_line('a不可以为0了!');
41 when others then
42 dbms_output.put_line(sqlcode);
43* end;
SQL> /
a不可以为0了!
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 e1 exception;
16 begin
17 a:=0;
18 b:='Axiao';
19 if a=0 then
20 raise e1;
21 end if;
22 c:=a/0;
23 select empno into no from emp where job='CLERK';
24 select * into e from emp where empno=7788;
25 t_s(3):=10;
26 t_s(5):=20;
27 r_s.subject:='语文';
28 r_s.score:=70;
29 dbms_output.put_line(a);
30 dbms_output.put_line(b);
31 dbms_output.put_line(no);
32 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
33 dbms_output.put_line(t_s(3));
34 dbms_output.put_line(t_s(5));
35 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
36 exception
37 when ee then
38 dbms_output.put_line('除0了!');
39 when e1 then
40 dbms_output.put_line('a不可以为0了!');
41 when others then
42 dbms_output.put_line(sqlcode);
43* end;
SQL> /
a不可以为0了!
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 e1 exception;
16 begin
17 a:=0;
18 b:='Axiao';
19 if a=0 then
20 raise e1;
21 end if;
22 c:=a/0;
23 select empno into no from emp where job='CLERK';
24 select * into e from emp where empno=7788;
25 t_s(3):=10;
26 t_s(5):=20;
27 r_s.subject:='语文';
28 r_s.score:=70;
29 dbms_output.put_line(a);
30 dbms_output.put_line(b);
31 dbms_output.put_line(no);
32 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
33 dbms_output.put_line(t_s(3));
34 dbms_output.put_line(t_s(5));
35 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
36 exception
37 when others then
38 dbms_output.put_line(to_char(sqlcode)||','||sqlerrm);
39* end;
SQL> /
1,User-Defined Exception
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 e1 exception;
16 begin
17 a:=0;
18 b:='Axiao';
19 if a=0 then
20 raise e1;
21 end if;
22 c:=a/0;
23 select empno into no from emp where job='CLERK';
24 select * into e from emp where empno=7788;
25 t_s(3):=10;
26 t_s(5):=20;
27 r_s.subject:='语文';
28 r_s.score:=70;
29 dbms_output.put_line(a);
30 dbms_output.put_line(b);
31 dbms_output.put_line(no);
32 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
33 dbms_output.put_line(t_s(3));
34 dbms_output.put_line(t_s(5));
35 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
36 exception
37 when others then
38 dbms_output.put_line(to_char(sqlcode)||','||sqlerrm);
39* end;
SQL> /
1,User-Defined Exception
PL/SQL 过程已成功完成。
SQL> ed
已写入文件 afiedt.buf
已写入文件 afiedt.buf
1 declare
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 begin
16 a:=0;
17 b:='Axiao';
18 if a=0 then
19 raise_application_error(-20001,'A不可以为0!');
20 end if;
21 c:=a/0;
22 select empno into no from emp where job='CLERK';
23 select * into e from emp where empno=7788;
24 t_s(3):=10;
25 t_s(5):=20;
26 r_s.subject:='语文';
27 r_s.score:=70;
28 dbms_output.put_line(a);
29 dbms_output.put_line(b);
30 dbms_output.put_line(no);
31 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
32 dbms_output.put_line(t_s(3));
33 dbms_output.put_line(t_s(5));
34 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
35 exception
36 when others then
37 dbms_output.put_line(to_char(sqlcode)||','||sqlerrm);
38* end;
SQL> /
-20001,ORA-20001: A不可以为0!
2 a integer;
3 b varchar2(10);
4 c integer;
5 no emp.empno%type;
6 e emp%rowtype;
7 type tab_s is table of integer index by binary_integer;
8 t_s tab_s;
9 type rec_s is record
10 (subject varchar2(10),
11 score integer);
12 r_s rec_s;
13 ee exception;
14 pragma exception_init(ee,-1476);
15 begin
16 a:=0;
17 b:='Axiao';
18 if a=0 then
19 raise_application_error(-20001,'A不可以为0!');
20 end if;
21 c:=a/0;
22 select empno into no from emp where job='CLERK';
23 select * into e from emp where empno=7788;
24 t_s(3):=10;
25 t_s(5):=20;
26 r_s.subject:='语文';
27 r_s.score:=70;
28 dbms_output.put_line(a);
29 dbms_output.put_line(b);
30 dbms_output.put_line(no);
31 dbms_output.put_line(to_char(e.empno)||','||e.ename||','||e.job);
32 dbms_output.put_line(t_s(3));
33 dbms_output.put_line(t_s(5));
34 dbms_output.put_line(r_s.subject||','||to_char(r_s.score));
35 exception
36 when others then
37 dbms_output.put_line(to_char(sqlcode)||','||sqlerrm);
38* end;
SQL> /
-20001,ORA-20001: A不可以为0!
PL/SQL 过程已成功完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?