Oracle之存储过程

前端之家收集整理的这篇文章主要介绍了Oracle之存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

在学习JDBC的时候,因为CallableStatement遇到了这个存储过程,所以学习了一下存储过程,因为在网上看了很多教程,有些教程的sql语句写的没问题,但是我就是运行不成功,原来是因为一些细节没有被提到.
这里我做一下记录,希望能够把细节都包括进去.

sql Window和Command Window

关于存储过程的语法,这里就不赘述.
首先说两个东西:
我使用的是PL/sql Developer.这个IDE里面可以创建一个sql window和一个command window

一. sql Window

sqlwindow是一个直接运行sql语句的界面.

二. Command Window

Command Window是类似于sql*Plus命令终端的,

这两者在写存储过程的时候有点小差别.

带有参数的

sql Window中创建存储过程

/*创建语句,setComm: 存储过程的名字,(salary number): 参数类型,不用写范围.*/
create or replace procedure setComm(salary number) is /*这里用is或者as好像都可以,没发现有什么不同.*/ begin update empcon set comm = salary where empno=1010; /*要执行的sql语句*/
end; /*结束*/

运行存储过程

begin setComm(300);
end;
/

在Command Window中创建存储过程

创建

sql> create or replace procedure setComm(salary number) 2 is 3 begin 4 update empcon set comm = salary where empno=1010;
  5  end;
  6  /
Procedure created

执行:

sql> exec setComm(22);
PL/sql procedure successfully completed

查询结果:

sql> select * from empcon;
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7369 SMITH      CLERK      7902 1980/12/17     800.00               20
 7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30
 7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30
 7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10
 7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20
 7900 JAMES      CLERK      7698 1981/12/3      950.00               30
 7902 FORD       ANALYST    7566 1981/12/3     3000.00               20
 7934 MILLER     CLERK      7782 1982/1/23     1300.00               10
 1010 3333                  7839 2017/4/21 1   5002.00     22.00     10
 9999 铜铁胆                7839 2017/4/21 1   5000.00   1500.00     10
12 rows selected

总结

带参数的存储过程就不再介绍了,其实这里有个关键点,也是我第一次忽略的,就是在Command Window里面,创建完存储过程后,要记得添加/符号,不然,可能会发现,一直按回车就是结束不了,不过可以用ESC结束.

sql> create or replace procedure setComm(salary number) 2 is 3 begin 4 update empcon set comm = salary where empno=1010;
  5  end;
  6  
  7  
  8  
  9  
 10  
 11  
 12  
 13  
 14

猜你在找的Oracle相关文章