如何解决如何在 API 函数中进行更新
作为规则,最好将单行提取隐藏在函数中,而不是:
BEGIN
SELECT name
INTO l_name
FROM mytable
WHERE primary_key = id_primary_key;
最好开发一个
PACKAGE mypackage
IS
FUNCTION fnc_name (id_primary_key IN mytable.primary_key%TYPE)
RETURN mytable.name%TYPE;
并执行
BEGIN
l_name := mypackage.fnc_name (id_primary_key);
但是更新呢? 我的意思是,如果我决定开发相同的更新解决方案,但在这种情况下,每次我只需要更新表的几列,你会如何开发这样的 API?
Oracle 10g 版
谢谢!
标记
解决方法
您开始开发“表格 API”或“TAPI”。这些都是有问题的,因为你提到的原因:如果 TAPI 的更新过程从 20 个参数更新表的所有 20 列,但在特定情况下你只需要更新 3 列,你应该如何调用它?一种方法是简单地传递所有 20 个值,即使您没有更改其中的大部分值。另一种方法是给每个参数一个“有趣”的默认值,如 CHR(0)
并让 API 更新如下:
UPDATE mytable
SET column1 = CASE WHEN p_column1 = CHR(0) THEN column1 ELSE p_column1 END,...
另一种(我认为更好)的方法是“事务 API”或 XAPI。在这里,您为可能需要更新表的每个业务事务构建一个单独的过程。例如:
PROCEDURE terminate_employee
( p_empid INTEGER,p_termination_date DATE,p_termination_reason VARCHAR2
);
此过程将使用一个简单的 SQL 更新语句来更新终止员工时需要更新的 3 列。
有人会说 SQL是数据库的 API!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。