2013-03-28 19 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」功能 讓您的查詢更小,易於

相關問題