我需要运行大查询(这是SP的一部分)并查看他们的结果(只是试图找到一个包含许多联合的大SP中的错误。我想将其分解为多个部分并单独运行它们)。 如果此SP的参数很少,我该怎么办?我不想在代码中替换它们,只需在带有此参数的硬编码的标头中添加声明就可以了。
我尝试过这样的事情:
DECLARE
p_asOfDate DATE := '22-Feb-2011';
BEGIN
SELECT * from myTable where dateInTable < p_asOfDate;
END
但它说我应该使用INTO关键字。如何在IDE中查看此结果? (我正在使用Aqua数据工作室)
我需要经常这样做,所以如果能找到一个简单的解决方案,我将非常高兴
答案 0 :(得分:1)
您正在使用匿名的pl / sql代码块。 在pl / sql过程中,您需要为结果指定目标变量。
因此,您首先需要定义一个变量来将结果保存在declare部分中 然后将结果数据插入其中。
DECLARE
p_asOfDate DATE := '22-Feb-2011';
p_result myTable%ROWTYPE;
BEGIN
select * into p_result from myTable where dateInTable < p_asOfDate;
END
那说你会得到多行返回,所以我会用 一个光标分别获取行。
DECLARE
CURSOR c_cursor (asOfDate IN DATE) is
select * from myTable where dateInTable < asOfDate;
p_asOfDate DATE := '22-Feb-2011';
p_result myTable%ROWTYPE;
BEGIN
OPEN c_cursor(p_asOfDate);
loop
FETCH c_cursor into p_result;
exit when c_cursor%NOTFOUND;
/* do something with the result row here */
end loop;
CLOSE c_cursor;
END
要输出结果,您可以使用以下内容:
dbms_output.put_line('some text' || p_result.someColumn);
或者你可以在sql命令行上执行查询(比如sqlplus) 并立即将结果作为表格。
我希望我能正确理解你的问题......
<强>更新强>
这是注入测试数据的另一种方法:
使用你的工具sql执行environemnt直接提交你的sql语句而不需要pl / sql块。
使用“&amp;”在变量部分前面触发变量的提示。
select * from myTable where dateInTable < &p_asOfDate;
结果应以这种方式由您的工具以格式化方式显示。 我不知道Aqua,但有些工具可以在sql代码之外定义这些参数。