Oracle之存储过程

来源:互联网 发布:音悦台 for mac 编辑:程序博客网 时间:2024/05/16 01:32

前言

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

SQL Window和Command Window

关于存储过程的语法,这里就不赘述.
首先说两个东西:
我使用的是PL/SQL Developer.这个IDE里面可以创建一个SQL window和一个command 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好像都可以,没发现有什么不同.*/beginupdate 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     1012 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  
0 0
原创粉丝点击