在 PL/SQL 中查詢前 n 個自然數之和
在這個問題中,我們給定一個數字 N。我們的任務是在 PL/SQL 中查詢前 n 個自然數之和。
PL/SQL 是 SQL 與程式語言的過程特性相結合的結果。
PL/SQL 具有以下特性:
PL/SQL 與 SQL 緊密整合。
它提供了廣泛的錯誤檢查。
它提供了眾多資料型別。
它提供了各種程式設計結構。
它透過函式和過程支援結構化程式設計。
它支援面向物件程式設計。
它支援 Web 應用程式和伺服器頁面的開發。
PL/SQL 具有以下優點:
SQL 是標準的資料庫語言,PL/SQL 與 SQL 緊密整合。PL/SQL 支援靜態 SQL 和動態 SQL。靜態 SQL 支援來自 PL/SQL 塊的 DML 操作和事務控制。在動態 SQL 中,SQL 允許在 PL/SQL 塊中嵌入 DDL 語句。
PL/SQL 允許一次將整個語句塊傳送到資料庫。這減少了網路流量,併為應用程式提供了高效能。
PL/SQL 為程式設計師提供了高生產力,因為它可以在資料庫中查詢、轉換和更新資料。
PL/SQL 透過強大的功能(例如異常處理、封裝、資料隱藏和麵向物件資料型別)節省了設計和除錯時間。
用 PL/SQL 編寫的應用程式完全可移植。
PL/SQL 提供了高安全級別。
PL/SQL 提供對預定義 SQL 包的訪問。
PL/SQL 提供對面向物件程式設計的支援。
PL/SQL 提供對開發 Web 應用程式和伺服器頁面的支援。
讓我們舉一個例子來理解這個問題:
Input: N = 6 Output: 21
解決方案方法
PL/SQL 的工作方式就像其他程式語言一樣,查詢前 n 個自然數之和的演算法也是一樣的。為了找到它,我們有兩種方法。
方法 1
解決此問題的一種方法是使用一個 sum 變數,並將 1 到 N 的每個值新增到 sum 中。完成所有加法後 sum 的值就是結果。
示例
程式說明解決方案的工作原理
DECLARE sumVal NUMBER; n NUMBER; i NUMBER; FUNCTION Findmax(n IN NUMBER) RETURN NUMBER IS sums NUMBER := 0; BEGIN FOR i IN 1..n LOOP sums := sums + i*(i+1)/2; END LOOP; RETURN sums; END; BEGIN n := 8; sumVal := findmax(n); dbms_output.Put_line('Sum of natural numbers is ' || sumVal); END;
輸出
Sum of natural numbers is 36
方法 2
解決此問題的另一種方法是使用通用公式來查詢前 N 個自然數之和。這同樣可以用 PL/SQL 實現。
查詢前 N 個自然數之和的公式是 $(N^*(N+1)(N+2))/6$。
示例
程式說明解決方案的工作原理
DECLARE sumNum NUMBER; N NUMBER; FUNCTION Findmax(N IN NUMBER) RETURN NUMBER IS sumVal NUMBER; BEGIN sumVal := (N * (N + 1) * (N + 2)) / 6; RETURN sumVal; END; BEGIN N := 8; sumNum := findmax(N); dbms_output.Put_line('Sum of natural numbers is ' || sumNum); END;
輸出
Sum of natural numbers is 36