配置 SQL*Plus 以仅返回数据

2023-11-29

我需要编写一个简单的 shell 函数,该函数从 Oracle DB 返回单个字段。举例来说SELECT 'ABC' FROM dual;ABC就是我所追求的。

这是我的功能:

function getSomeOraVal
{
sqlplus $USER/$PASSWD@$ORADB<<!!

SET sqlprompt '' 
SET sqlnumber off 

SET verify off
SET pages 0
SET echo off
SET head on
SET feedback off
SET feed off
SET serveroutput on
SET escape '\'

VARIABLE  v_someVal VARCHAR2(30);

BEGIN
SELECT 'ABC' INTO v_someVal FROM dual;
END;
/

SELECT :v_someVal FROM dual;

!!
}

但是,我想将 sqlplus 输出(仅数据 -> 'ABC')通过管道传输到 shell 变量中,然后该函数返回该变量并可以从其他 shell 脚本调用。不幸的是,sqlplus 返回大量垃圾,例如顶部的“Welcome to Oracle”和底部的“Disconnected...”。

如何从 SQL 结果集中提取数据,或者在本例中提取单个值并将其传递到 UNIX 变量以便在 shell 中进行进一步操作?

Thanks


这个askTom 线程中有几种不同的方法将值从 SQL*Plus 返回到 shell 脚本.

一种常见的方法是除了要返回的值(在 Tom 的示例中,即字符串“KEEP”)之外,还选择一个常量标记,然后使用 sed(或您最喜欢的命令行解析器)来提取您要返回的数据。实际上感兴趣

#!/bin/ksh

x=`sqlplus / <<endl | grep KEEP | sed 's/KEEP//;s/[   ]//g'
select 'KEEP' , max(sal) from emp;
exit
endl`

echo the answer is $x

其他方法,例如允许您读取多行输出该线程中也进行了讨论。

如果您不想打印标题,则应该指定

set head off

在您的 SQL*Plus 脚本中 - 如果您不需要标头,我不确定为什么要在脚本中显式设置标头...您想保留标头的某些部分吗?

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

配置 SQL*Plus 以仅返回数据 的相关文章

随机推荐

  • 如何在Android中捕获音频的输出流?

    我是开发新手 我尝试在 Android 平台上创建一个均衡器 如何在 Android 上捕获输出音频流 我只需要获取从我的应用程序发出的音频信息 我已经搜索了www developers android com 但没有找到任何信息 目前 A
  • 如何在iOS中获取丰富的电池信息?

    我想知道是否可以在 iOS 中接收有关电池的信息 例如 容量 mA 电压 V 循环次数 我知道 UIDevice 类 但电池电量不是我想要的 Try UI设备监听器 它基本上窃取了整个电池数据字典UIDevice不使用任何私有 API 它暴
  • 基础5:选项卡回调

    升级到 Foundation 5 如何向我的选项卡添加回调 看代码好像不太可能 它可以与 Foundation 4 中的部分兼容 他们说回调有两种方式http foundation zurb com docs components tabs
  • Lua __lt 不与 table.sort 一起使用,即使它已定义

    我有一个继承自实体类的图块类 实体类定义了 lt 虽然我可以从图块类访问它 但当我尝试将所有图块放入 table sort 时 出现 比较两个表 错误 实体类 local Entity function Entity New pos obj
  • plt。在子图中仅适用于一个图

    我是 python 新手 所以我希望我的问题足够好 我正在尝试根据两个不同的数据框创建两个子图 我的问题是 当我尝试定义标题和 xlim 时 它仅适用于一个图 这是我的脚本 fig axes plt subplots 1 2 figsize
  • Android Camera2 API 拉伸预览

    我正在使用 Google 示例项目 但如果不拉伸它 我似乎无法让预览正常工作 public void setAspectRatio int width int height if width lt 0 height lt 0 throw n
  • 如何消除 Jquery 中的冲突?

    我是 JQuery 新手 我在我的页面中使用了 2 个 jQueries 对于第一个 JQuery 我的脚本是这样的 现在 当我像这样使用第二个 jQuery 时 我丢失了第一个 jQuery 无法加载
  • Clearcase:将子分支移动到主分支

    在clearcase中 我开始在一个名为的分支上工作main release4 release5 在我开始工作后 release4 被合并到 main 中 我的同事开始开发 main release5 无论如何我可以移动我的main rel
  • 如果两个可能条件中的任何一个成立,则 maven-antrun-plugin 跳过目标

    我可以通过以下方式将两个属性 A 和 B 传递给 maven mvn test DA true or mvn test DB true 如果定义了 A 或 B 我希望跳过目标 我发现当只考虑A时这是可能的
  • 删除Delphi中标签之间变量子字符串的所有实例

    我正在将 HTML 中的可读文本提取到字符串中 并且需要删除之间的现有文本标签 实现这一目标最有效的方法是什么 现在我正在这样做 function RemoveIEScripts const s string string var i In
  • 如何在 Linux Mint 上防止一致的 java 暂停模式

    我有一个在 Linux Mint 上运行的 Java 应用程序 每一分钟 程序都会显示出非常明显的减慢 暂停 停顿时间持续 3 到 4 秒 当我们运行同一程序的更多实例时 它们也会每分钟暂停 3 到 4 秒 每个节目在一分钟的不同秒停止 最
  • 通过 Google Apps 帐户通过 C# 发送电子邮件

    我有一个标准的 Google Apps 帐户 我已通过 Google Apps 设置了自定义域 当我使用 Gmail 界面时 我能够通过 Google Apps 成功发送和接收电子邮件 但是 我想通过代码发送电子邮件 为了尝试这个 我一直在
  • 运营转型库?

    我正在寻找一个库 它允许我在多个用户之间实时同步文本 ala Google Docs 我偶然发现了运营转型 它似乎符合我的需求 话虽如此 我了解 OT 的要点 但不了解 OT 的数学或实施 因此 我想知道是否有一个拖放 JavaScript
  • 如果不可用,Schema.org dateModified 是否应该有一些默认值?

    对于 Schema orgArticle我收到错误https developers google com structured data testing tool for dateModified 建议使用 dateModified 字段
  • 搞乱编码和 XslCompiledTransform

    我正在搞乱编码 一方面 我有一个以 UTF 8 格式响应我的 url 我非常确定 感谢 firebug 插件 我使用以下代码打开读取 UTF 8 格式内容的 url StreamReader reader new StreamReader
  • 姜戈 CSRF 403

    获取 CSRF 403 下面的 console log 语句确认我正在获取令牌 我正在将请求提交到本地服务器上的同一域 internal csrfToken cookie csrftoken internal csrfSafeMethod
  • 使用线程调用 Py_Finalize 时出现 AssertionError(仅限 3.X)

    当我从与 python 调用不同的 C 线程调用 C API 的 Py Finalize 时 我收到错误输出 我看到的错误是 Exception ignored in
  • 使用 Mockito 匹配特定类型的空列表

    我有一个需要一些参数的方法 其中之一是某个类的 List 并且 null 是该参数的可接受值 public void doStuff String string Nullable List
  • 将参数传递给重写的 OnEndPage 方法

    我需要将参数传递给 OnEndPage 方法的重写版本 当我声明该参数时 我没有收到任何错误 但当我调用该方法时 它告诉我 无法将 void 隐式转换为 itextsharp text pdf ipdfpageevent 这是我的 OnEn
  • 配置 SQL*Plus 以仅返回数据

    我需要编写一个简单的 shell 函数 该函数从 Oracle DB 返回单个字段 举例来说SELECT ABC FROM dual ABC就是我所追求的 这是我的功能 function getSomeOraVal sqlplus USER