标签:
SQL> -- 书写一个最简单的PLSQL
SQL> select ‘hello‘ from dual;
‘HELLO‘
----------
hello
SQL> declare
2 -- 申明部分
3 begin
4 -- 执行的sql语句
5 dbms_output.putline(‘hello world‘);
6
7 end;
8 /
dbms_output.putline(‘hello world‘);
*
第 5 行出现错误:
ORA-06550: 第 5 行, 第 14 列:
PLS-00302: 必须声明 ‘PUTLINE‘ 组件
ORA-06550: 第 5 行, 第 2 列:
PL/SQL: Statement ignored
SQL> declare
2 -- 申明部分
3 begin
4 -- 执行的sql语句
5 dbms_output.put_line(‘hello world‘);
6
7 end;
8 /
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 begin
4 -- 执行的sql语句
5 dbms_output.put_line(‘hello world‘);
6
7 end;
8 /
hello world
PL/SQL 过程已成功完成。
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL COMM DEPTNO
---------- ---------- ----------
2016 SAL
8000
2015 zhangsan MANAGER 2016 18-3月 -16
5000 3000 20
7369 SMITH CLERK 7902 17-12月-80
800 20
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL COMM DEPTNO
---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81
1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81
1250 500 30
7566 JONES MANAGER 7839 02-4月 -81
2975 20
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL COMM DEPTNO
---------- ---------- ----------
7654 MARTIN SALESMAN 7698 28-9月 -81
1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81
2850 30
7782 CLARK MANAGER 7839 09-6月 -81
2450 10
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL COMM DEPTNO
---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-4月 -87
3000 20
7839 ZS PRESIDENT 17-11月-81
10000 10
7844 TURNER SALESMAN 7698 08-9月 -81
1500 0 30
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL COMM DEPTNO
---------- ---------- ----------
7876 ADAMS CLERK 7788 23-5月 -87
1100 20
7900 JAMES CLERK 7698 03-12月-81
950 30
7902 FORD ANALYST 7566 03-12月-81
3000 20
EMPNO ENAME JOB MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL COMM DEPTNO
---------- ---------- ----------
7934 MILLER CLERK 7782 23-1月 -82
1300 10
已选择16行。
SQL> set linesize 200l
SP2-0268: linesize 选项的编号无效
SQL> set linesize 200;
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
2016 SAL 8000
2015 zhangsan MANAGER 2016 18-3月 -16 5000 3000 20
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 ZS PRESIDENT 17-11月-81 10000 10
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择16行。
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
2016 SAL 8000
2015 zhangsan MANAGER 2016 18-3月 -16 5000 3000 20
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 ZS PRESIDENT 17-11月-81 10000 10
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择16行。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name varchar(20);
4 begin
5 -- 执行的sql语句
6 select ename into name from emp;
7 dbms_output.put_line(name);
8
9 end;
10 /
declare
*
第 1 行出现错误:
ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在 line 6
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name varchar(20);
4 begin
5 -- 执行的sql语句
6 select ename into name from emp where empno=7566;
7 dbms_output.put_line(name);
8
9 end;
10 /
JONES
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name varchar(20);
4 gongzi number;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 select sal into gongzi from emp where empno = 7566;
9 dbms_output.put_line(name);
10 dbms_output.put_line(gongzi);
11
12 end;
13 /
JONES
2975
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name varchar(20);
4 gongzi number;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 dbms_output.put_line(name);
9 dbms_output.put_line(gongzi);
10
11 end;
12 /
JONES
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name varchar(20);
4 gongzi number := 400;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 dbms_output.put_line(name);
9 dbms_output.put_line(gongzi);
10
11 end;
12 /
JONES
400
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name emp.ename%type;
4 begin
5 -- 执行的sql语句
6 select ename into name from emp where empno=7566;
7 dbms_output.put_line(name);
8 dbms_output.put_line(gongzi);
9
10 end;
11 /
*
第 9 行出现错误:
ORA-06550: 第 8 行, 第 23 列:
PLS-00201: 必须声明标识符 ‘GONGZI‘
ORA-06550: 第 8 行, 第 2 列:
PL/SQL: Statement ignored
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name emp.ename%type;
4 begin
5 -- 执行的sql语句
6 select ename into name from emp where empno=7566;
7 dbms_output.put_line(name);
8
9 end;
10 /
JONES
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name emp.ename%type;
4 myrow emp%rowtype;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 select * into myrow from emp where empno = 7566;
9 dbms_output.put_line(name);
10 dbms_output.put_line(myrow.ename +" " + myrow.job);
11
12 end;
13 /
dbms_output.put_line(myrow.ename +" " + myrow.job);
*
第 10 行出现错误:
ORA-06550: 第 10 行, 第 36 列:
PLS-00201: 必须声明标识符 ‘ ‘
ORA-06550: 第 10 行, 第 2 列:
PL/SQL: Statement ignored
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name emp.ename%type;
4 myrow emp%rowtype;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 select * into myrow from emp where empno = 7566;
9 dbms_output.put_line(name);
10 dbms_output.put_line(myrow.ename);
11
12 end;
13 /
JONES
JONES
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name emp.ename%type;
4 myrow emp%rowtype;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 select * into myrow from emp where empno = 7566;
9 dbms_output.put_line(name);
10 dbms_output.put_line(myrow.job);
11
12 end;
13 /
JONES
MANAGER
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 -- 申明部分
3 name emp.ename%type;
4 myrow emp%rowtype;
5 begin
6 -- 执行的sql语句
7 select ename into name from emp where empno=7566;
8 select * into myrow from emp where empno = 7566;
9 dbms_output.put_line(name);
10 dbms_output.put_line(myrow.sal);
11
12 end;
13 /
JONES
2975
PL/SQL 过程已成功完成。
SQL> spool off;
SQL> set serveroutput on
SQL> declare
2 weather varchar(20) := ‘晴天‘;
3 begin
4 if(weather = ‘晴天‘)
5 then
6 dbms_output.put_line(‘去爬山‘);
7 end if;
8 end;
9 /
去爬山
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 weather varchar(20) := ‘晴天2‘;
3 begin
4 if(weather = ‘晴天‘)
5 then
6 dbms_output.put_line(‘去爬山‘);
7 else
8 dbms_output.put_line(‘看电影‘);
9 end if;
10 end;
11 /
看电影
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> declare
2 weather varchar(20) := ‘雨天‘;
3 begin
4 if(weather = ‘晴天‘)
5 then
6 dbms_output.put_line(‘去爬山‘);
7 elseif(weather == ‘雨天‘)
8 then
9 dbms_output.put_line(‘睡觉‘);
10 else
11 dbms_output.put_line(‘看电影‘);
12 end if;
13 end;
14 /
elseif(weather == ‘雨天‘)
*
第 7 行出现错误:
ORA-06550: 第 7 行, 第 18 列:
PLS-00103: 出现符号 "="在需要下列之一时:
( - + all case
mod new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable> any
avg count current max min prior some sql stddev sum variance
execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<一个带有字符集说明的可带引号的字符串文字>
<一个可带引号的 SQL 字符串>
SQL> set serveroutput on
SQL> declare
2 weather varchar(20) := ‘雨天‘;
3 begin
4 if(weather = ‘晴天‘)
5 then
6 dbms_output.put_line(‘去爬山‘);
7 elseif(weather = ‘雨天‘)
8 then
9 dbms_output.put_line(‘睡觉‘);
10 else
11 dbms_output.put_line(‘看电影‘);
12 end if;
13 end;
14 /
dbms_output.put_line(‘睡觉‘);
*
第 9 行出现错误:
ORA-06550: 第 8 行, 第 3 列:
PLS-00103: 出现符号 "THEN"在需要下列之一时:
:= . ( % ;
ORA-06550: 第 13 行, 第 4 列:
PLS-00103: 出现符号 ";"在需要下列之一时:
if
SQL> set serveroutput on
SQL> declare
2 weather varchar(20) := ‘雨天‘;
3 begin
4 if(weather = ‘晴天‘)
5 then
6 dbms_output.put_line(‘去爬山‘);
7 elsif(weather = ‘雨天‘)
8 then
9 dbms_output.put_line(‘睡觉‘);
10 else
11 dbms_output.put_line(‘看电影‘);
12 end if;
13 end;
14 /
睡觉
PL/SQL 过程已成功完成。
SQL> -- 作业 根据不同的成绩打印出相应的级别
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 index number := 1;
3 sum number := 0;
4 begin
5 loop
6 exit when index > 100
7 sum = sum + index;
8 index = index + 1;
9 end loop;
10 dbms_output.put_line(sum);
11 end;
12 /
index number := 1;
*
第 2 行出现错误:
ORA-06550: 第 2 行, 第 2 列:
PLS-00103: 出现符号 "INDEX"在需要下列之一时:
begin
function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursor
符号 "begin在 "INDEX" 继续之前已插入。
ORA-06550: 第 3 行, 第 6 列:
PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
:= . ( @ %
;
符号 "." 被替换为 "NUMBER" 后继续。
ORA-06550: 第 6 行, 第 13 列:
PLS-00103: 出现符号 "INDEX"在需要下列之一时:
( - + case
mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev sum variance
ex
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 sum number := 0;
4 begin
5 loop
6 exit when myindex > 100
7 sum = sum + myindex;
8 myindex = myindex + 1;
9 end loop;
10 dbms_output.put_line(sum);
11 end;
12 /
sum = sum + myindex;
*
第 7 行出现错误:
ORA-06550: 第 7 行, 第 3 列:
PLS-00103: 出现符号 "SUM"在需要下列之一时:
* & - + ; / at
mod remainder rem <an exponent (**)> and or || multiset
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 loop
6 exit when myindex > 100
7 mysum = mysum + myindex;
8 myindex = myindex + 1;
9 end loop;
10 dbms_output.put_line(mysum);
11 end;
12 /
mysum = mysum + myindex;
*
第 7 行出现错误:
ORA-06550: 第 7 行, 第 3 列:
PLS-00103: 出现符号 "MYSUM"在需要下列之一时:
* & - + ; /
at mod remainder rem <an exponent (**)> and or || multiset
符号 "and" 被替换为 "MYSUM" 后继续。
ORA-06550: 第 8 行, 第 11 列:
PLS-00103: 出现符号 "="在需要下列之一时:
:= . ( @ % ;
ORA-06550: 第 9 行, 第 2 列:
PLS-00103: 出现符号 "END"
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 loop
6 exit when myindex > 100
7 mysum := mysum + myindex;
8 myindex := myindex + 1;
9 end loop;
10 dbms_output.put_line(mysum);
11 end;
12 /
mysum := mysum + myindex;
*
第 7 行出现错误:
ORA-06550: 第 7 行, 第 3 列:
PLS-00103: 出现符号 "MYSUM"在需要下列之一时:
* & - + ; /
at mod remainder rem <an exponent (**)> and or || multiset
符号 ";" 被替换为 "MYSUM" 后继续。
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 loop
6 exit when myindex > 100;
7 mysum := mysum + myindex;
8 myindex := myindex + 1;
9 end loop;
10 dbms_output.put_line(mysum);
11 end;
12 /
5050
PL/SQL 过程已成功完成。
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 loop
6 exit when myindex > 100;
7 mysum = mysum + myindex;
8 myindex = myindex + 1;
9 end loop;
10 dbms_output.put_line(mysum);
11 end;
12 /
mysum = mysum + myindex;
*
第 7 行出现错误:
ORA-06550: 第 7 行, 第 9 列:
PLS-00103: 出现符号 "="在需要下列之一时:
:= . ( @ % ;
ORA-06550: 第 8 行, 第 3 列:
PLS-00103: 出现符号 "MYINDEX"
ORA-06550: 第 9 行, 第 2 列:
PLS-00103: 出现符号 "END"
SQL> -- 总结: 不要用关键字来做变量的名称 2. 赋值一定要用:=
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 while myindex <=100;
6 loop
7 mysum := mysum + myindex;
8 end loop;
9
10 dbms_output.put_line(mysum);
11 end;
12 /
while myindex <=100;
*
第 5 行出现错误:
ORA-06550: 第 5 行, 第 21 列:
PLS-00103: 出现符号 ";"在需要下列之一时:
* & - + / at
loop mod remainder rem <an exponent (**)> and or || multiset
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 while myindex <=100;
6 loop
7 mysum := mysum + myindex;
8 myindex = myindex + 1;
9 end loop;
10
11 dbms_output.put_line(mysum);
12 end;
13 /
while myindex <=100;
*
第 5 行出现错误:
ORA-06550: 第 5 行, 第 21 列:
PLS-00103: 出现符号 ";"在需要下列之一时:
* & - + / at
loop mod remainder rem <an exponent (**)> and or || multiset
ORA-06550: 第 8 行, 第 11 列:
PLS-00103: 出现符号 "="在需要下列之一时:
:= . ( @ % ;
ORA-06550: 第 9 行, 第 2 列:
PLS-00103: 出现符号 "END"
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 while myindex <=100
6 loop
7 mysum := mysum + myindex;
8 myindex = myindex + 1;
9 end loop;
10
11 dbms_output.put_line(mysum);
12 end;
13 /
myindex = myindex + 1;
*
第 8 行出现错误:
ORA-06550: 第 8 行, 第 11 列:
PLS-00103: 出现符号 "="在需要下列之一时:
:= . ( @ % ;
ORA-06550: 第 9 行, 第 2 列:
PLS-00103: 出现符号 "END"
SQL> -- 计算一下1-100的和
SQL> set serveroutput on
SQL> declare
2 myindex number := 1;
3 mysum number := 0;
4 begin
5 while myindex <=100
6 loop
7 mysum := mysum + myindex;
8 myindex := myindex + 1;
9 end loop;
10
11 dbms_output.put_line(mysum);
12 end;
13 /
5050
PL/SQL 过程已成功完成。
SQL> spool off;
标签:
原文地址:http://www.cnblogs.com/877599949yan/p/5312940.html