【发布时间】:2018-04-27 13:06:13
【问题描述】:
UDF 和 SP 之间的主要区别之一是 UDF 中只能包含 select 语句,而不能包含 insert/update/delete 语句。有人可以解释一下这背后的原因吗?下面的功能:
create function test(..)
...
BEGIN
insert into EMPLOYEE('22',12000,'john');
return 0;
END
无效。但是为什么会这样呢?
【问题讨论】:
-
一个函数返回可以在
SELECT语句中使用的值。这两种结构做不同的事情。 -
@GordonLinoff 我说的是功能块内的选择语句。我已经编辑了我的问题。
-
函数可以做插入/更新/删除;如果他们这样做,您就不能从 SQL 上下文中调用它们,只能从 PL/SQL 中调用它们。 (而且这通常被认为是不好的做法。)为什么你认为你展示的内容是无效的?
-
@AlexPoole 我认为由于函数需要返回一些值并插入等实际上只返回更新的行数,所以将它们放在函数中没有意义吗?
-
@AlexPoole 你问我“为什么你认为你展示的内容是无效的”,这就是我的想法..
标签: sql oracle stored-procedures plsql user-defined-functions