任何人都能解释一下Oracle中函数和过程之间的主要区别是什么?如果我能用功能做所有事情,为什么我必须使用程序?
我听说主要区别在于性能,"程序比功能更快".但没有任何细节.
提前致谢.
我试图查看pl/sql过程和函数之间的区别,并找到链接http://it.toolbox.com/blogs/oracle-guide/learn-plsql-procedures-and-functions-13030.首先让我告诉你开发人员通常用pl/sql过程和函数做什么
1)想获得一些回报值.他可以用函数和程序来解决它.如果他想要返回单个值的函数,他可以使用return语句.如果他想要返回多个值,他可以使用inout参数来实现它.他可以使用inout参数从过程中获取返回值(不是使用return语句)
但只要他能够使用return语句或inout参数实现其意图,它对开发人员没有任何影响.
所以这里也可以互相替换.
2)他可以在功能和程序中使用DML.所以在这里他也可以使用其中任何一个来改变数据库的状态.
所以我没有得到任何具体的推理,哪一个可以在一些人可以互相替换.
我在某种程度上发现的唯一合理的原因是函数可以从SQL调用,程序不能
有人可以解释哪一个使用的时间和原因?
在 Oracle 数据库上,我有一个包含 SDO_GEOMETRY 对象的表。我想在数据库中查询那些边小于 x 的多边形。从理论上讲,这对于像这样的查询很容易
SELECT * FROM myTable t WHERE LENGTH(t.geometry.sdo_ordinates) < x
Run Code Online (Sandbox Code Playgroud)
显然, LENGTH 函数是为 char 定义的,并且类型
t.geometry.sdo_ordinates是 oracle.sql.ARRAY 所以这不起作用。在 Oracle 中选择长度或数组不应该有一种简单的方法吗?不知何故,我无法正确使用语法。
PS:我用下面的查询解决了我的搜索,仍然是原来的问题,是不是有一个数组大小/长度函数?
SELECT * FROM myTable t WHERE LENGTH(t.geomety.Get_WKT()) < (x * c)
Run Code Online (Sandbox Code Playgroud) 我们可以在程序里面调用函数,但是可以在函数内部调用程序吗?我试过但我不能在函数内部调用程序.你能告诉我为什么我们不能调用函数内的程序吗?
可能重复:
PL/SQL中的函数和过程有什么区别?
函数总是返回一个值,但是当我们在一个过程中使用'out'时,过程也会返回一个值,所以请告诉我什么时候应该编写一个函数,什么时候应该编写一个过程?我们决定使用程序或功能的标准是什么?