【发布时间】:2014-11-20 17:58:52
【问题描述】:
问题的第二部分:如何使用 SQL*Plus 做同样的事情(获得所有结果,没有任何循环)。
我正在编写一些 PL/SQL 脚本来使用 Jenkins 测试数据完整性。
我有一个这样的脚本:
declare
temp_data SOME_PACKAGE.someRefCurFunction; // type: CURSOR
DATA1 NUMBER;
DATA2 NUMBER;
DATA3 SOMETHING.SOMETHING_ELSE%TYPE;
begin
cursor := SOME_PACKAGE.someFunction('some',parameters,here);
LOOP
FETCH cursor INTO DATA1,DATA2,DATA3;
EXIT WHEN temp_data%NOTFOUND;
dbms_output.put_line(DATA1||','||DATA2||','||DATA3);
END LOOP;
end;
结果如下所示:
Something1,,Something2
Something3,Something4,Something5
Something6,Something7,Something8
有时结果为空,如第一行所示。没关系,他们应该是。
这个脚本的目的很简单 - 从光标中获取所有内容,用逗号分隔数据,并打印带有结果的行。
这里的示例非常简单,但它只是示例。 “现实生活”包有时包含数百个变量,处理庞大的数据库表。
我需要它尽可能简单。
是否有任何方法可以从游标中获取所有内容,如果可能,用逗号分隔单个结果,然后将其发送到输出? Jenkins 测试的最终输出应该是一个文本文件,以便能够与其他结果进行比较。
提前致谢:)
【问题讨论】:
-
已经很简单了。
-
您能否详细说明您当前的实现有什么问题? (除了不是quoting values——但考虑到你的数据,这可能不是必需的,或者是吗?)
-
@DaaaahWhoosh - 是的。但是我们需要一种更快的方法来生成配置文件和简单的 SQL*Plus 查询。我们必须用几乎无限的参数集测试几十个 PL/SQL 包。编写每个查询,这将比我提供的示例复杂几倍,或者更复杂 - 太昂贵了;)
-
@SylvainLeroux - 实现没有错,它是正确的 FWIK。我需要的结果是:一个 SQL*Plus 查询执行与上面的代码相同的操作,而无需声明大量变量。我需要的是一个包含结果的文本文件,所以我可以将它与其他结果与其他参数集等进行比较。
标签: sql oracle plsql sqlplus plsqldeveloper