【PL/SQL练习】命名块: 存储过程、函数、触发器、包
创建时定义名称 2、可以被Oracle server 保存 3、可以被任何程序调用 4、可以被共享
存储过程:
1、不带参数的存储过程:
SQL> create or replace procedure proc1 is
2
3 v_ename emp.ename%type;
4 v_sal emp.sal%type ;
5
6 begin
7 select ename,sal into v_ename,v_sal from emp where empno=&no;
8 dbms_output.put_line('Name is : '||v_ename||' , '||'Salary is : '||v_sal);
9 exception
10 when no_data_found then
11 dbms_output.put_line('you number is not crrect ,please input again !');
12 when others then
13 dbms_output.put_line('Others error !');
14 end;
SQL> exec proc1; //执行存储过程
SQL> create or replace procedure proc1 is
2
3 v_ename emp.ename%type;
4 v_sal emp.sal%type ;
5
6 begin
7 select ename,sal into v_ename,v_sal from emp where empno=&no;
8 dbms_output.put_line('Name is : '||v_ename||' , '||'Salary is : '||v_sal);
9 exception
10 when no_data_found then
11 dbms_output.put_line('you number is not crrect ,please input again !');
12 when others then
13 dbms_output.put_line('Others error !');
14 end;
通过数据字典查看procedure信息:
带有参数的存储过程: 参数定义中,IN、OUT和IN OUT代表参数的三种不同模式:
IN:当调用存储过程时,该模式的形参接收对应实参的值,并且该是只读的,即不能被修改。默认为IN。 OUT:该形参被认为只能写,既只能为其赋值。在存储过程中不能读它的值。返回时,将该形参值传给相应的实参。
IN OUT:都允许
①in
SQL> create or replace procedure ins_dept
2 (v_deptno in number,v_dname varchar2, v_loc in varchar2) is
3
4 e_dept_err exception;
5 pragma exception_init(e_dept_err ,-0001);
6 begin
7 insert into dept values (v_deptno,v_dname,v_loc);
8 commit;
9 exception
10 when e_dept_err then
11 dbms_output.put_line('You deptno is not unique ,Please input unique deptno number !');
12 when others then
13 dbms_output.put_line('Others error !');
14 end;
②OUT:
SQL> create or replace procedure proc2
2 ( v_empno in number ,v_ename out varchar2,v_sal out number)
3 is
4
5 begin
6
7 select ename,sal into v_ename,v_sal from emp where empno=v_empno;
8
9 dbms_output.put_line ('Employee name is: '||v_ename);
10
11 dbms_output.put_line ('Employee salary is: '||v_sal);
12 exception
13 when no_data_found then
14 dbms_output.put_line('Employee ID is error !');
15 when others then
16 dbms_output.put_line('Others error !');
17 end;
在系统下运行:
SQL> var name varchar2(10);
SQL> var sal number;
SQL> exec proc2(7369,:name,:sal);
PL/SQL procedure successfully completed
name
---------
SMITH
sal
---------
6800 通过PLSQL 块运行:
SQL> declare
2 v_name emp.ename%type;
3 v_sal emp.sal%type;
4 begin
5 proc2(7369,v_name,v_sal);
6 end;
3.IN-OUT:
SQL> create or replace procedure proc3
2 (v_empno in out number ,v_ename out varchar2,v_sal out number)
3 as
4 begin
5 select empno,ename,sal into v_empno,v_ename,v_sal from emp where empno=v_empno;
6 dbms_output.put_line ('Employee ID is: '||v_empno);
7 dbms_output.put_line ('Employee name is: '||v_ename);
8 dbms_output.put_line ('Employee salary is: '||v_sal);
9 exception
10 when no_data_found then
11 dbms_output.put_line('Employee ID is error !');
12 when others then
13 dbms_output.put_line('Others error !');
14 end;
15 /
Procedure created 执行存储过程: SQL> declare
2 v_empno emp.empno%type;
3 v_ename emp.ename%type;
4 v_sal emp.sal%type;
5
6 begin
7 v_empno := &n;
8 proc3(v_empno,v_ename,v_sal);
9
10 end;
【PL/SQL练习】命名块: 存储过程、函数、触发器、包的更多相关文章
- 【PL/SQL】匿名块、存储过程、函数、触发器
名词解释 子程序:PL/SQL的过程和函数统称为子程序. 匿名块:以DECLARE或BEGIN开始,每次提交都被编译.匿名块因为没有名称,所以不能在数据库中存储并且不能直接从其他PL/SQL块中调用. ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
- oracle pl/sql简介、块、过程
pl/sql语言是oracle在sql上扩展的语言.1 过程.函数.触发器是在pl/sql编写2 过程.函数.触发器是在oracle中3 pl/sql的语句可以在java中直接调用 简单介绍 在sql ...
- 在PL/SQL中调用Oracle存储过程
存储过程 1 什么是存储过程? 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2 存储过程的参数模式 存储过程的参数特性: IN类型的参数 ...
- 使用oracle 的 PL/Sql 定时执行一个存储过程
CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...
- pl/sql developer中dbms_output.put_line函数的运用
pl/sql developer中dbms_output.put_line函数可以打印想显示在屏幕上的信息,运用时需要注意几点: 1 必须处于begin ... end: 2 需要先执行 set ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
- PL/SQL规范、块、过程、函数、包、触发器
1.pl/sql规范 标识符号的命名规范 1) 定义变量,用 v- 作为前缀 v-sal 2)定义常亮, 用 c- 作为前缀 c-rate 3) 定义游标,用 cursor作为后缀 emp_curso ...
- PL/SQL学习笔记_03_存储函数与存储过程
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dua ...
- oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
--创建索引 关键词 index create[unique] index index_name on table_name(column_name [,column_name…]) [tablesp ...
随机推荐
- bzoj4561: [JLoi2016]圆的异或并
Description 在平面直角坐标系中给定N个圆.已知这些圆两两没有交点,即两圆的关系只存在相离和包含.求这些圆的异或面 积并.异或面积并为:当一片区域在奇数个圆内则计算其面积,当一片区域在偶数个 ...
- bzoj2734 集合选数
Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中 ...
- QueryRunner的API
org.apache.commons.dbutils Class QueryRunner java.lang.Object org.apache.commons.dbutils.AbstractQue ...
- 在eclipse中设计BPMN 2.0工作流定义的根本步骤
原文地址:http://www.myexception.cn/eclipse/1863140.html 在eclipse中设计BPMN 2.0工作流定义的基本步骤 1. Activiti问我们提供了A ...
- JavaScript权威指南 第七章 数组
主要介绍一下数组方法 1.Join() Array.join()方法将数组中所有元素都转换为字符串并连接在一起,返回最后生成的字符串. 可以指定一个可选的字符串在生成的字符串中来分隔数组的各个元素.默 ...
- Hadoop学习9--动态增加datanode
http://www.cnblogs.com/ggjucheng/archive/2012/04/18/2454689.html
- mapreduce计算框架
一. MapReduce执行过程 分片: (1)对输入文件进行逻辑分片,划分split(split大小等于hdfs的block大小) (2)每个split分片文件会发往不同的Mapper节点进行分散处 ...
- Android优秀资源整理合集(论菜鸟到高级攻城狮)
转载请注明转自:http://blog.csdn.net/u011176685/article/details/51434702 csdn文章:Android优秀资源整理合集(论菜鸟到高级攻城狮) 时 ...
- sudo gem install cocoapods
在使用IOS_BaiduSDK的时候,需要用到cocoapods,所以就需要按照步骤继续着.但是在过程中会遇到一些问题: 1. sudo gem install cocoapods 运行这个报错 Ru ...
- HDFS的运行原理(转)
简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...