在 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;
Learn SQL in-depth with real-world projects through our SQL certification course. Enroll and become a certified expert to boost your career.
输出
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