加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle之存储过程

发布时间:2020-12-12 15:00:33 所属栏目:百科 来源:网络整理
导读:前言 在学习JDBC的时候,因为CallableStatement遇到了这个存储过程,所以学习了一下存储过程,因为在网上看了很多教程,有些教程的SQL语句写的没问题,但是我就是运行不成功,原来是因为一些细节没有被提到. 这里我做一下记录,希望能够把细节都包括进去. SQL Windo

前言

在学习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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读