PL/sql下,如果想比较N个数的大小,每两个数比较后取最大值,然后和下一个数比较,请问怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL/sql下,如果想比较N个数的大小,每两个数比较后取最大值,然后和下一个数比较,请问怎么写相关的知识,希望对你有一定的参考价值。

写法具体步骤:

1、首先在电脑中打开powerShell,如下图所示。

2、进入ipython窗口中,先定义三个变量,如下图所示。

3、然后选择两个值比较,如果 a大于b的情况,如下图所示。


4、否则的话就是a不大于b的情况,这时可以看到输出的最大为3,如下图所示就完成了。

结构化查询语言简介:

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。

它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

参考技术A

1、首先在电脑中打开powerShell,如下图所示。

2、进入ipython窗口中,先定义三个变量,如下图所示。

3、然后选择两个值比较,如果 a大于b的情况,如下图所示。

4、否则的话就是a不大于b的情况,这时可以看到输出的最大为3,如下图所示就完成了。

参考技术B 尽量使用已经用的现成的函数吧:
如果是从一行中取最大值,则使用greast()
如果是从一列中的最大值,则使用max()
参考技术C 例:有N整数值a、b、c,d... ...找出最大的值。
答:设一个变量m存放最大值,m初始值为0,按以下方式取最大值:
... ...
if m<a then m:=a; end if;
if m<b then m:=b; end if;
if m<c then m:=c; end if;
... ...
end if
最后m就是最大值。本回答被提问者和网友采纳
参考技术D 有个 greatest 函数很省事的
SQL> SELECT
2 GREATEST(1,3,5,7,9) A
3 FROM
4 dual;

A
----------
9

SQL> select greatest('aa', 'bb', 'cc') A
2 from dual;

A
--cc

在不永久更改数据库的情况下验证 PL/SQL

【中文标题】在不永久更改数据库的情况下验证 PL/SQL【英文标题】:Validate PL/SQL without permanent changes in database 【发布时间】:2021-04-22 15:30:23 【问题描述】:

是否可以在不进行永久更改的情况下验证 PL/SQL 代码。 我知道可以commit 然后rollback,但我正在寻找是否有其他解决方案。

例如,如果我编写了一个程序并且我想知道它是否能正确编译。

我正在使用 Oracle SQL Developer,但没有看到任何选项。

【问题讨论】:

没有。将该过程复制到不同的名称,即“test”到“test2”并编译test2,然后将其删除。 commit 和 rollback 用于 DML 语句,而不是 pl/sql 编译,对此没有影响。 为什么不希望创建这种情况下的过程?我很难想到我要开发一个程序但只想看看它是否会编译而不是实际创建它的原因。我能想到的唯一原因是,如果我正在做一些事情,比如在 prod 中而不是在开发环境中编写代码。理论上,您可以将过程转换为匿名块并对其执行dbms_sql.parse 以查看它是否解析。我只是很难理解你为什么要这样做。 @JustinCave 也许他正在生产环境中开发;)? @KoenLostrie - 在这种情况下,这是一个经典的 XY 问题meta.stackexchange.com/questions/66377/what-is-the-xy-problem 否! 您不能回滚编译。此外,编译本身就像一个 DDL 语句。它提交,即使编译有错误。见fiddle。您最好的选择是维护您的版本控制和备份。测试完成后,您可以恢复数据并在需要时恢复程序。 【参考方案1】:

您可以编译您的程序并检查它是否有效(不返回编译错误)。 但在这种情况下,Oracle 只进行 句法语义 分析。

语法分析 – Oracle 验证关键字、对象名称、运算符、分隔符等是否正确放置在您的 SQL 语句中。因此,像select * foRm dual 这样的查询将在此验证期间失败。例如,我们可以在这里得到这样的错误: ORA-00900:无效的 SQL 语句 ORA-00923:在预期的位置找不到 FROM 关键字 ORA-00924:缺少 BY 关键字 ORA-00933: SQL 命令未正确结束 … 语义分析 - 它验证对主机变量和数据库对象的引用是否有效(包括它们的授权)以及主机变量数据类型是否正确。例如,select * from nonexisting_table 将无法通过此验证。

也就是说,在这些步骤中,您不会收到像 ORA-00979 not a group by expression 这样的错误,因为 Oracle 稍后会在优化阶段。

更多信息: http://orasql.org/2017/05/01/sql-validation-during-plsql-compilation/

【讨论】:

【参考方案2】:

另一个答案是尝试已经存在一段时间的版本功能

【讨论】:

以上是关于PL/sql下,如果想比较N个数的大小,每两个数比较后取最大值,然后和下一个数比较,请问怎么写的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 里,在TEST窗口调试,想停止了时候,不能停止,怎么回事

Oracle SQL - 如何在没有 PL/SQL 的情况下检查合同的延续

怎么设置pl/sql按f8执行一行

PL/SQL基础的执行部分

在用PL/SQL登录数据库时,如果用scott这个用户登录,会出现提示“your password has expired”,这里填啥

在关闭pl/sql之前未提交的事物,会不会被默认提交?