更新时间:2022-01-22 18:10:13
给我们讲讲oracle数据库的存储过程。相信朋友们也应该很关心这个话题。现在,对于我的朋友来说,oracle数据库的存储过程是什么?边肖还收集了关于oracle数据库的存储过程。这是什么?我希望你看到后会喜欢。
oracle数据库的存储过程:针对特定函数的一组SQL语句被编译并存储在数据库中。存储过程是由流控制和SQL语句编写的过程。这个过程被编译和优化,并存储在数据库服务器中。当应用程序使用它时,它只能被调用。
存储过程是为特定函数编译并存储在数据库中的一组SQL语句。用户通过指定存储过程的名称并给出参数(如果存储过程有参数)来执行存储过程。存储过程是数据库中的一个重要对象,任何设计良好的数据库应用程序都应该使用它。
存储过程是由流控制和SQL语句编写的过程。这个过程被编译和优化,并存储在数据库服务器中。当应用程序使用它时,它只能被调用。在ORACLE中,几个相关的过程可以组合成一个包。
优点:
1.存储过程仅在创建时编译。存储过程每次执行后都不需要重新编译,而普通的SQL语句每次执行都编译一次,所以使用存储过程可以提高数据库的执行速度。
2.当对数据库执行复杂操作(如更新、插入、查询和删除多个表)时,这种复杂操作可以与存储过程打包在一起,并与数据库提供的事务一起使用。
3.存储过程可以重用,可以减少数据库开发人员的工作量。
4.高度安全。可以设置为只有特定用户有权使用指定的存储过程。
简单地说,你在你的机器上写了一个存储过程。这个存储过程像表中的数据一样放在远程数据库服务器中,但它也是可执行代码。可以连接到数据库服务器的其他用户可以调用您编写的存储过程。
它的作用是隐藏细节,也就是说你写的存储过程代码可能比较复杂,但是别人调用起来很简单,不知道具体是怎么做的,一次可以完成多个指令。
基本语法
创建[或替换]过程存储过程名称[(参数[输入|输出|输入输出]数据类型.)]
{AS|IS}
[描述部分]
开始
可执行部分
[异常
错误处理部分]
END[过程名];1.可选关键字“或替换”意味着,如果存储过程已经存在,则新的存储过程将覆盖通用用户存储过程的重建。
2.参数部分用于定义多个参数(如果没有参数,可以省略)。参数有三种形式:输入、输出和输入输出。如果未指定参数的形式,则默认为输入。
3.关键字AS也可以写成IS,后面跟着过程的描述,在这里可以定义过程的局部变量。
4.编写存储过程可以通过使用任何文本编辑器或直接在SQLPLus环境中完成。编写的存储过程必须在SQLPLus环境中编译,才能生成编译后的代码。在编译过程中,原始代码和编译后的代码将存储在数据库中。成功编译的存储过程可以在ORacle环境中调用。
5.当不需要存储过程时,可以将其删除。删除存储过程的人是过程的创建者,或者是拥有删除任何过程的系统权限的人。删除存储过程的语法如下:
删除过程存储过程名称;6.如果要重新编译存储过程,您只能是该过程的创建者或拥有ALTER ANY PROCEDURE系统权限的人。语法如下:
ALTER PROCEDURE存储过程名COMPILE;7.执行(或调用)存储过程的人是过程的创建者,或者是拥有“执行任何过程”系统权限的人,或者是被所有者授予“执行”权限的人。实现方法如下:
方法1:
执行模式名称。存储过程名称[(参数.)];方法2:
开始
架构名称。存储过程名[(参数.)];
END8.传递的参数必须与定义的参数的类型、数量和顺序一致(如果参数定义了默认值,调用时可以省略参数)。参数可以是变量、常数或表达式。
9.as和is的区别:两者都可以用在存储过程和函数中,但是使用IS将无法在调试模式下调试存储函数;视图中只能使用AS,不能使用IS。光标中只能使用IS,不能使用AS。
10.oracle中的解码功能
解释:
解码(条件,值1,返回值1,值2,返回值2,值n,返回值n,默认值)这个函数的含义如下:
如果条件=值1,则
返回(转换值1)
ELSIF条件=值2然后
返回(转换值2)
.
ELSIF条件=值n然后
返回(换算值n)
其他
返回(默认值)
END IFdecode(字段或字段操作值1值2值3)此函数的结果是,当字段或字段操作值等于值1时,函数返回值2;否则,它将返回值3。
> 当然值1值2值3也可以是表达式这个函数使得某些sql语句简单了许多示例:
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值sign函数根据某个值是0、正数还是负数分别返回0、1、-1
例如:
变量1=10变量2=20
则sign(变量1-变量2)返回-1decode解码结果为“变量1”达到了取较小值的目的。
11、nvl函数
NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值如果第一个参数的值不为空则显示第一个参数本来的值。
NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为空那么显示第二个参数的值如果第一个参数的值不为空则显示第三个参数的值。
NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL)否则返回第一个值。
Coalese函数的作用是的NVL的函数有点相似其优势是有更多的选项。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)表示可以指定多个表达式的占位符。所有表达式必须是相同类型或者可以隐性转换为相同的类型。
返回表达式中第一个非空表达式如有以下语句:
SELECT COALESCE(NULL,NULL,3,4,5) FROM dual其返回结果为:3
如果所有自变量均为 NULL则 COALESCE 返回 NULL 值
12、max函数
对字符型数据的最大值是按照首字母由A~Z的顺序排列越往后其值越大。当然对于汉字则是按照其全拼拼音排列的若首字符相同则比较下一个字符以此类推。
13、随机抽取N条记录
https://blog.csdn.net/bbliutao/article/details/7727322
14、untion all
union all解释为联合所有。Union解释为联合。union或者Union all实现把前后两个select集合的数据联合起来组成一个结果集查询输出。这就要求联合前后的结果集需要分别有相同的输出字段的数目并且对应的字段类型要相同。SELECT column1, column2 from table1 union (all) select column1, column2 from table2以上语句要求量表的column1字段类型相同column2类型相同。而且每个查询的数目都是一样的。UNION ALL和UNION的差别就在ALL上面第一个叫联合所有说明会显示前后两个查询所有的数据而UNION没有ALL(所有)这个单词实现将前后两个查询的数据联合到一起后去掉重复的数据显示
推荐教程:《Oracle教程》
以上就是oracle数据库的存储过程是什么的详细内容!
来源:php中文网