SQLPlus 中的运行循环

2024-06-25

我制作了一个 bash 脚本,它通过 SQLPlus 连接到数据库并运行一个包含 For 循环的 SQL 脚本,如下所示。但是一旦运行它,它就会卡在循环的 BEGIN 中,如下所示。我尝试直接通过SQLPlus运行,结果是一样的。那么任何人都可以建议这里做错了什么吗?

BEGIN
  FOR l_counter IN 1..5
  LOOP
    DBMS_OUTPUT.PUT_LINE( l_counter );
  END LOOP;
END

Result:

   BEGIN
  2  FOR l_counter IN 1..5
  3  LOOP
  4  DBMS_OUTPUT.PUT_LINE( l_counter );
  5  END LOOP;
  6  END;
  7
  8

Bash:

SPOOL $FILE

@/home/genesys/scripts/Counter.sql
SPOOL OFF
EXIT
EOF

编辑:这是我在末尾添加斜杠后得到的结果。

SQL> set serveroutput on;
SQL> BEGIN
  FOR l_counter IN 1..10
  LOOP
    DBMS_OUTPUT.PUT_LINE( l_counter || ' finished ');
  END LOOP;
END;/  2    3    4    5    6
  7
  8
  9
 10

您可以选择使用以下两种方法之一来将结果DBMS_OUTPUT.PUT_LINE命令写入文件

  1. 通过使用.sql file
$ cd /home/genesys/scripts
$ sqlplus /nolog
SQL> conn un/pwd
SQL> @Counter.sql

where Counter.sql文件包含以下内容:

SET FEEDBACK OFF
SET SERVEROUTPUT ON
SPOOL output2.txt
BEGIN
FOR l_counter IN 1..10
 LOOP
  DBMS_OUTPUT.PUT_LINE(l_counter || ' finished ');
 END LOOP; 
END;
/
SPOOL OFF
  1. 通过创建一个.sh(Counter.sh) file :
record=`sqlplus -S /nolog << EOF
conn hr/hr
SET FEEDBACK OFF
SET SERVEROUTPUT ON
SPOOL output.txt
BEGIN
 FOR l_counter IN 1..10
 LOOP
   DBMS_OUTPUT.PUT_LINE(l_counter || ' finished ');
 END LOOP; 
END;
/
SPOOL OFF
EOF`

从创建文件的命令提示符调用

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

SQLPlus 中的运行循环 的相关文章

  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • 将匹配的值传递给函数,并替换为返回值

    我如何让 Bash 匹配正则表达式 而不是用常量字符串替换值 而是将匹配的值传递给函数 然后从函数的返回值中获取要替换的值 像下面的伪代码一样 它替换了每一个匹配项 a d 具有相同的字符 但大写 function uppercase ec
  • 有没有办法将应用程序上下文与非 Sybase DB 服务器中的数据库连接进行通信(类似于 Sybase 中的 set_appcontext)?

    Sybase 有一种让应用程序进行通信的方法 上下文 数据 http manuals sybase com onlinebooks group as asg1250e sag Generic BookTextView 38861 hf 0
  • 在 python for 循环中一次运行 3 个变量。

    python 2 7 中具有多个变量的 For 循环 Hello 我不确定如何解决这个问题 我有一个功能可以访问网站并下载 csv 文件 它以特定格式保存 csv 文件 name uniqueID dataType csv 这是代码 imp
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • 检测目录中是否有某些内容被修改,如果是,则备份 - 否则不执行任何操作

    我有一个 数据 目录 我通过 shell 脚本定期同步到远程 NAS 但是 我想让这变得更有效率 我想在运行 rsync 之前检测 数据 中是否发生了变化 这样我就不会不必要地唤醒 NAS 上的驱动器 我正在考虑修改 shell 脚本以获取
  • PS1 定义中的条件 pwd

    我想显示当前工作目录如果我处于symlink比没有 到目前为止我已经 pwd P pwd echo 1 31m pwd P echo 1 32m pwd 将返回所需的输出 但它不能替代 w在命令提示符下 我尝试用反引号括起来 但这只会导致p
  • 为什么 sed 将替换文本放在行首?

    在 Mac OS X bash 上 我在命令行中使用以下 sed sed s S 1 file1 txt gt file2 txt file1 txt有这样的行 some path to somewhere some stuff here
  • 在 Oracle SQL Developer 中连接表

    我有四个表 我想将它们连接起来并一起显示输出 我不确定 Oracle SQL Developer 的语法如何工作 我知道这对于程序员来说是一个简单的问题 我希望有人可以就代码的外观提出建议 The tables are JNL1 JNL2
  • ORACLE 更新并返回 OLD 和 NEW 值

    PL SQL Oracle 12c 中是否有与此 T SQL 查询等效的内容 UPDATE A SET A columnA 10 WHERE A columnB lt 30 OUTPUT INSERTED DELETED 查询更新表A 同时
  • 在 bash 中生成脚本并将其保存到需要 sudo 的位置

    在 bash 中 我可以根据此站点创建一个带有定界符的脚本 http tldp org LDP abs html abs guide html GENERATESCRIPT http tldp org LDP abs html abs gu
  • 当 R 中出现“warnings()”时中断循环

    我有一个问题 我正在运行一个循环来处理多个文件 我的矩阵非常巨大 因此如果我不小心 我经常会耗尽内存 如果创建任何警告 是否有办法打破循环 它只是继续运行循环并报告它在很久以后失败 烦人 聪明的 stackoverflow ers 有什么想
  • 在 BASH 中按字节读取文件

    我需要读取指定文件的第一个字节 然后读取第二个字节 第三个字节 依此类推 我怎样才能在 BASH 上做到这一点 P S 我需要获取这个字节的十六进制 完全重写 2019 年 9 月 比以前的版本更短更简单 速度更快 但没那么快 Yes ba
  • 如何在 xargs 命令中使用 >?

    我想找到一个 bash 命令 它可以让我 grep 目录中的每个文件 并将该 grep 的输出写入一个单独的文件 我的猜测是做这样的事情 ls 1 xargs I grep ABC gt out 但是 据我所知 xargs 不喜欢双引号 但
  • 如何在 SQL 中将 varchar 列拆分为多个值?

    我有这个 SQL Select 语句 SELECT AD Ref List Value FROM AD Ref List WHERE AD Ref List AD Reference ID 1000448 这是 SELECT 的结果 为了限
  • 物化视图快速刷新-更新基表时插入和删除

    大家好 Stackoverflowers 的朋友们 TLDR MVIEW 是否使用UPDATE or DELETE INSERT刷新期间 前一段时间 当我在 Oracle 中摆弄物化视图时 遇到了一件晦涩难懂的事情 这是我的例子 2 个基表
  • 使用 cx_oracle 返回 MERGE 中受影响的行数

    如何在 CX Oracle 中执行 MERGE INTO sql 命令来获取受影响的行数 当我在cx oracle 上执行MERGE SQL 时 我得到的cursor rowcount 为 1 有没有办法获取受合并影响的行数 由于 cx o
  • bash shell 嵌套 for 循环

    我想编写一个必须在 bash shell 提示符下工作的嵌套 for 循环 在单行命令中嵌套 for 循环 例如 for i in a b do echo i done a b 在上面的例子中 for循环是在单行命令中执行的 像这样 我在
  • 过滤给定范围内的坐标

    我有数百个带有地理位置的 out 文件 我将把它们批量导入到 SQLite 数据库中 但是 为了节省时间 我只会导入地理坐标在某些间隔内的线 文件是这样的 value value longitude latitude value value

随机推荐