在 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

更新於: 2022 年 2 月 1 日

7K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告