2013-03-28 39 views
0

这可能是一个奇怪的问题,但我一直在想,如果一个数据库架构良好,为什么要定义一个自定义的程序/函数呢?
什么是这些功能/程序?
我想我可以得到很多减票,但我无法抗拒:)
为什么在使用DBMS时应该定义自己的过程/函数?

让我解释我为什么想知道。在当前的工作场所,其他开发人员使用函数/过程来剪切由逗号分隔的具有多个值的字符串。
在我的愚见中,这可能已经实现这样的功能。

那么定义和使用函数或过程的其他情况是否合法呢?

回答

1

设计一个DBMS来满足潜在应用程序(DBMS的)所有可能的范围是非常困难的。尽管可以使用内置函数来标记逗号分隔的值字符串,但是没有任何东西可以防止应用程序需要对分号分隔的字符串执行相同的操作,依此类推。

定义自定义函数和过程的能力是扩展应用程序能力或DBMS适应不同情况的自然方式。

就合法性而言,定义是一件难事。可能地,您的公司可能拥有由常用功能或程序组成的代码库以供重用。

这是回答您的问题吗?

1

您可以创建自定义存储过程来解决无限问题。

简单的管理数据; 使用事务控制创建操作。 优化多个操作的应用程序,对dbms执行单个请求并且执行多个dbms。 ...

但是,许多开发商说这是不好的做法或有异味。

+0

是的,我的鼻子,闻起来好笑。感觉就像在一个jsp文件中做某种工作,应该在一个servlet中完成。我喜欢你的最后一行哈哈谢谢@ – Ascendant 2013-03-28 02:49:07

0

使用的功能和程序,使你的DBMS更加灵活如 DECLARE - 类书是记录

(title varchar(50), 

    author varchar(50), 

    subject varchar(100), 

    book_id number); 

book1的书籍;

book2 books;

程序printbook(书书)为

BEGIN

DBMS_OUTPUT.PUT_LINE( '书名:' || book.title);

dbms_output.put_line('Book author:'|| book.author);

dbms_output.put_line('Book subject:'|| book.subject);

dbms_output.put_line('Book book_id:'|| book。book_id);

END;

BEGIN - 预订1个规范

book1.title:= 'C编程';

book1.author:='Nuha Ali';

book1.subject:='C Programming Tutorial';

book1.book_id:= 6495407;

- 预订2规范

book2.title:= '电信计费';

book2.author:='Zara Ali';

book2.subject ='Telecom Billing Tutorial';

book2.book_id:= 6495700;

- 使用程序打印图书信息

printbook(BOOK1);

printbook(book2);

END;

/上面“printbook”功能 让您的查询更小,易于

相关问题