使用Oracle中的参数查看查询结果

时间:2011-02-21 11:24:02

标签: sql oracle aquafold

我需要运行大查询(这是SP的一部分)并查看他们的结果(只是试图找到一个包含许多联合的大SP中的错误。我想将其分解为多个部分并单独运行它们)。 如果此SP的参数很少,我该怎么办?我不想在代码中替换它们,只需在带有此参数的硬编码的标头中添加声明就可以了。

我尝试过这样的事情:

DECLARE

p_asOfDate DATE :=  '22-Feb-2011';

BEGIN

SELECT * from myTable where dateInTable < p_asOfDate;

END

但它说我应该使用INTO关键字。如何在IDE中查看此结果? (我正在使用Aqua数据工作室)

我需要经常这样做,所以如果能找到一个简单的解决方案,我将非常高兴

1 个答案:

答案 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代码之外定义这些参数。