这可能是一个奇怪的问题,但我一直在想,如果数据库架构良好,为什么要定义自定义过程/函数?
这些功能/程序是做什么用的?
我想我可以得到很多减票,但我无法抗拒:)
让我解释一下为什么我想知道。在当前工作场所,其他开发人员使用函数/程序来剪切具有多个值的字符串,这些值用逗号分隔。
在我看来,如果没有这些功能,这本来可以实现的。
那么在哪些情况下定义和使用函数或过程是合法的呢?
设计一个 DBMS 来满足潜在应用程序(DBMS)的所有可能范围是非常困难的。尽管可以有一个内置函数来标记逗号分隔的值字符串,但没有什么能阻止应用程序需要对分号分隔的字符串执行相同的操作,依此类推。
定义自定义函数和过程的能力是扩展应用程序能力或 DBMS 对不同情况的适应性的自然方式。
就合法性而言,这是一件很难定义的事情。您的公司可能有代码库,其中包含要重用的常用函数或过程。
这回答了你的问题了吗?
您可以创建自定义存储过程来解决无穷大问题。
易于管理的数据;使用事务控制创建操作。多操作上的应用程序优化,对dbms执行单个请求,dbms执行多个。...
但是,许多开发人员说这是不好的做法或有难闻的气味。
使用函数和过程使您的 DBMS 更加灵活,例如 DECLARE -- 类型书籍是记录
(title varchar(50),
author varchar(50),
subject varchar(100),
book_id number);
book1 书;
book2 书;
PROCEDURE printbook (书本)是
开始
dbms_output.put_line ('书名:' || book.title);
dbms_output.put_line('书籍作者:' || book.author);
dbms_output.put_line('书籍主题:'|| book.subject);
dbms_output.put_line('Book book_id : ' || book.book_id);
结尾;
开始——第 1 册规范
book1.title := 'C 编程';
book1.author := '努哈阿里';
book1.subject := 'C 编程教程';
book1.book_id := 6495407;
-- 第 2 册规范
book2.title := '电信计费';
book2.author := '扎拉阿里';
book2.subject := '电信计费教程';
book2.book_id := 6495700;
-- 使用程序打印图书信息
印刷书(书 1);
印刷本(书 2);
结尾;
/ 上面的“printbook”功能使您的查询更小更容易