如何在 SQLPlus 或 PL/SQL 中制作菜单?

2023-12-30

我正在制作这个程序,它有一个菜单,可以获取用户的输入并根据他/她的选择执行特定的脚本。大致如下:



Please make a selection:
1: Do script a
2: Do script b
3: Do script c
  

我看了这个链接:如何制作 SQLPlus 或 PL/SQL 菜单 https://stackoverflow.com/questions/1850105/how-to-create-a-menu-in-sqlplus-or-pl-sql

我能够从中得到一些东西,但它的功能并不完整。因为有些台词我不明白。见下文。



PROMPT  1: Make a sales invoice 
PROMPT  2: Inquire a sales invoice

accept selection PROMPT "Enter option 1-2: "
  
set term off
column script new_value v_script  -- What's column script?
select case '&selection.'
       when '1' then '@test.sql'
       when '2' then '@test.sql'
       else '@FinalAssignment.sql'
       end as script  -- What script is this referring to? 
from dual; -- Don't know this

set term on

@&v_script. -- What script is being ran here?

我可以让程序运行脚本,但其他的却不起作用。如果我选择一个超出该范围的数字,脚本将关闭,而不是重新加载自身。此外,当脚本运行时,它会自行关闭,而不是返回到主菜单。我知道我必须运行一个循环来解决这个问题,但我不知道如何用这种语言来实现它。

任何帮助表示赞赏。 谢谢!


Ans 1. Column script是列中的select查询定义为as script, 意思是script是列别名。

Ans 2. as script指的是列别名selectstmt。此栏只有一栏select陈述。例子SELECT column AS col1 FROM table;。专栏NEW_VALUE http://www.adp-gmbh.ch/ora/sqlplus/new_value.html获取选定的值(该值由casestmt,在本例中是脚本名称test1.sql, test2.sql, or FinalAssignment.sql)并将其存储到v_script.

Ans 3. dualtable 是一种特殊的单行表,默认情况下存在于所有 Oracle 数据库安装中。更多关于dual here http://en.wikipedia.org/wiki/DUAL_table。你可以select任何来自dual, like select sysdate from dual; or select 'ABCDEF' AS col1 from dual;.

Ans 4. The v_script列将包含根据您从以下选项中选择的脚本名称case中的声明select查询,即从菜单选择(如答案 2 中所述)。一旦选择,您可能想要运行该选定的脚本(不是吗?)。就是这样@&v_script做。您可以使用以下命令在 SQLPlus 中运行脚本@script_name

PROMPT  1: Make a sales invoice 
PROMPT  2: Inquire a sales invoice    
accept selection PROMPT "Enter option 1-2: "

set term off
column script new_value v_script  --Q1. What's column script?
select case '&selection.'          --from accept above
       when '1' then '@test1.sql'  --script to run when chosen option 1.
       when '2' then '@test2.sql'  --script to run when chosen option 2.
       else '@FinalAssignment.sql' --this script
       end as script  --Q2. What script is this referring to? 
from dual; --Q3. Don't know this

set term on

@&v_script. --Q4. What script is being ran here?

Caveats-

  1. FinalAssignment.sql应该是脚本本身的名称,即上述代码所在的脚本。

  2. 第 1,2 和 3 行是脚本的一部分。PROMPT http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12032.htm是一个有效的 SQL*Plus 命令,也是ACCEPT http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12005.htm.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SQLPlus 或 PL/SQL 中制作菜单? 的相关文章

  • MyBatis:在一个查询中通过注释收集

    我有一个 xml 映射器 一个选择映射器和一个结果映射器 它工作没有问题 但我想使用注释 我的映射器
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 如何在NiFi中映射流文件中的列数据?

    我有 csv 文件 其结构如下 Alfreds Centro Ernst Island Bacchus Germany Mexico Austria UK Canada 01 02 03 04 05 现在我必须将这些数据移入数据库 如下所示
  • 在 Oracle 行的多个列上使用透视

    我在 Oracle 表中有以下示例数据 tab1 我正在尝试将行转换为列 我知道如何在某一列上使用 Oracle 数据透视表 但是否可以将其应用于多个列 样本数据 Type weight height A 50 10 A 60 12 B 4
  • 在触发期间更新 oracle 中的同一行?

    简短的问题 因为我不知道如何搜索这个 我可以 重新更新 同一行吗 例如 我有一个存储付款小计的字段 并且考虑到我的业务限制 我可以更新该值 我可以仅用触发器更新同一行的总计吗 预先谢谢您 顺便说一句 我正在使用 Oracle 和 PL SQ
  • 在 PL/SQL 中将绑定变量与动态 SELECT INTO 子句结合使用

    我有一个关于 PL SQL 中的动态 SQL 语句中可以使用绑定变量的问题 例如 我知道这是有效的 CREATE OR REPLACE FUNCTION get num of employees p loc VARCHAR2 p job V
  • date_sub 对于 mysql 可以,对于 postgresql 可以

    此查询适用于 mySQL 不适用于 Postgresql select from where id and h gt date sub now INTERVAL 30 MINUTE 错误是 Query failed ERREUR erreu
  • 在单个 select 语句中多次有条件地求和同一列?

    我有一个表 显示每个月在给定位置的各种类型的部署的员工部署情况 ID Location ID Date NumEmployees DeploymentType ID 例如 一些记录可能是 1 L1 12 2010 7 1 Permanent
  • 如何查找当前数据库类型

    我们有一个 SQL 脚本可以在多种类型的数据库上执行 是否可以获取正在执行 SQL 脚本的当前数据库的类型 注意 我们不能使用非标准 SQL 即 TSQL 等 不 ANSI SQL 中没有任何关于确定数据库供应商的内容
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • PL/pgSQL SELECT 到数组中

    这是我的函数声明和主体的一部分 CREATE OR REPLACE FUNCTION access update RETURNS void AS DECLARE team ids bigint BEGIN SELECT INTO team
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • SQL Join 列上类似于另一列[重复]

    这个问题在这里已经有答案了 可能的重复 mysql连接查询使用like https stackoverflow com questions 1930809 mysql join query using like 我想要进行连接 其中一列包含
  • Postgresql 一张表的多个计数

    我想从表中的两列中获得这些列中值的统一计数 例如 两列是 表 报告 type place one home two school three work four cafe five friends six mall one work one
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 根据日期顺序排名

    我的数据如下 Heading Date A 2009 02 01 B 2009 02 03 c 2009 02 05 d 2009 02 06 e 2009 02 08 我需要如下排名 Heading Date Rank A 2009 02
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • sql查询获取从一月到当月的所有数据,即使没有记录

    我不擅长 sql 所以任何帮助世界都很棒 我有一个 SQL 查询 可以获取从一月到当月注册的记录 我的代码示例 SELECT DatePart YEAR p createStamp as TheYear DatePart MONTH p c
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam

随机推荐

  • 如何禁用漂亮照片?

    我现在如何启用prettyphoto 但问题是如何禁用 这里我启用了 PrettyPhoto document ready function a rel prettyPhoto prettyPhoto social tools false
  • Facebook 访问令牌无法扩展

    我正在使用 facebook android sdk 我刚刚从 github 下载了它 我了解访问令牌仅在非常有限的时间内有效 并且每次应用程序启动时都需要按照文档中的描述进行扩展 https developers facebook com
  • UIPickerView 辅助功能 VoiceOver 问题

    启用 VoiceOver 后 无论我们滑动到哪一行 UIPickerView 的画外音始终显示 Item 1 of TotalNumberOfItems 以编程方式 所有元素都会使用正确的选定索引进行更新 但 VoiceOver 始终显示
  • 如何从 C# 中的类访问表单方法和控件?

    我正在开发一个 C 程序 现在我有一个Form和几节课 我希望能够访问一些Form控件 例如TextBox 来自我的班级 当我尝试更改文本中的文本时TextBox从我的课堂上我收到以下错误 非静态字段 方法或属性 Project Form1
  • OpenCV 和像 Adob​​e Photoshop 一样的锐化遮罩

    我正在尝试像 Adob e Photoshop 中那样实现模糊遮罩 我在互联网上收集了很多信息 但我不确定我是否遗漏了一些东西 这是代码 void unsharpMask cv Mat img double amount double ra
  • 如何使用保存的 html 从 Gridstack 构建网格

    我一直在使用 Gridstack 动态创建网格 我使用以下函数来序列化网格及其数据 但我似乎不知道如何构建我的网格and它的内容来自它创建的 JSON 数组 我查过https github com troolee gridstack js
  • 在 Mapbox 中获取两点之间的路线?

    我最近在 React Native 上使用 Mapbox gl 而不是 Google 地图 我正在尝试添加一个功能 显示地图上从 A 点到 B 点的方向 OR use Mapbox 路线 API https docs mapbox com
  • EPPLUS 可清除一系列细胞的内容物

    我想使用 EPPLUS 清除一系列细胞 我尝试了下面的语法 但它给了我一个错误 你调用的对象是空的 使用 EPPLUS 清除细胞 A24 C36 内容物的正确方法是什么 ExcelPackage package new ExcelPacka
  • C# travis 的问题

    特拉维斯 西尔现在支持 C http docs travis ci com user languages csharp 测试版 尝试了 8 种不同的方法后 我找不到解决我的问题的方法 我有一个 ASP MVC 项目 travis 使用 mo
  • 如何使用 LIKE 运算符在 SQL Server 中进行此匹配?

    我正在尝试匹配价格字符串 例如 25 00 来查找相应的货币符号 例如 25 00 应与美元匹配 这已经很有效了 然而 当我输入 25 00 无货币符号 时 我在 CUP 上出现了不需要的匹配 我在 SQL Server 2012 中设置了
  • iOS 8 Today 小部件对齐问题

    这是我的故事板 我正在使用自动布局 而不是使用尺寸类别 When I ran it on iPhone 5s it works fine both portrait and landscape But when I ran it on iP
  • Office.js 使浏览器历史记录功能无效,破坏历史记录使用情况

    Office js 的官方版本可以在这里找到 https appsforoffice microsoft com lib 1 hosted office js 它包含以下代码行 window history replaceState nul
  • 当 Facebook 用户点击 FB Like 按钮时,我如何向他们发送电子邮件?

    用户点击我页面上的 Facebook Like 按钮后 我想自动向他们发送一封电子邮件 这可能吗 您不能强制用户连接您的应用程序并授予email单击 赞 按钮即可获得许可 不过你可以订阅edge create event http deve
  • 对列组应用函数

    我该如何使用apply或者一个相关的函数来创建一个新的数据框 其中包含一个非常大的数据框中每对列的行平均值的结果 我有一个可以输出的仪器n在大量样本上复制测量值 其中每个测量值都是一个向量 所有测量值都是相同长度的向量 我想计算每个样本的所
  • Angular - 如何查看过滤器结果数组以了解控制器的更改

    我有一个过滤器 可以通过 ng repeat 列表根据某些条件进行过滤 我如何查看由过滤服务创建的结果数组以了解控制器内部的更改 完整的问题和描述在这里角度工厂过滤器 无法将数据传递到过滤器 https stackoverflow com
  • 如何最小化最短路径树的总成本

    我有一个具有正边权重的有向无环图 它具有单个源和一组目标 距离源最远的顶点 我找到从源到每个目标的最短路径 其中一些路径重叠 我想要的是一个最短路径树 它可以最小化所有边上的权重总和 例如 考虑其中两个目标 假设所有边的权重相等 如果它们在
  • Bitmap 从 BitmapFactory.decodeFile(filename) 返回 null

    当我调用此函数时 图像视图中没有图像bitmapFactory decodefile filename 显示空 请为此提供帮助 这是我的代码 public Bitmap ShowImage String imageName String u
  • 为什么一些mysql连接在删除+插入后选择mysql数据库的旧数据?

    我的 python wsgi Web 应用程序中的会话出现问题 2 个 wsgi 守护进程中的每个线程都有一个不同的 持久的 mysqldb 连接 有时 在删除旧会话并创建新会话后 某些连接仍然会在选择中获取旧会话 这意味着它们无法验证会话
  • 如何在javascript中监视窗口选择更改事件

    有没有办法监听window selection的change事件 类似于回调 当用户选择不同的内容时调用 如果您使用的是 jQuery 并且您想要处理 ID 为 的特定项目的选择myInput 你可以这样做 myInput select f
  • 如何在 SQLPlus 或 PL/SQL 中制作菜单?

    我正在制作这个程序 它有一个菜单 可以获取用户的输入并根据他 她的选择执行特定的脚本 大致如下 Please make a selection 1 Do script a 2 Do script b 3 Do script c 我看了这个链