您正在使用 pl/sql 代码的匿名块。在 pl/sql 过程中,您需要为结果指定目标变量。
因此,您首先需要在声明部分定义一个变量来保存结果,然后将结果数据插入其中。
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 执行环境直接提交您的 sql 语句,无需 pl/sql 块。
在变量部分前面使用“&”来触发变量提示。
select * from myTable where dateInTable < &p_asOfDate;
结果应该以这种方式由您的工具以格式化的方式显示。我不了解 Aqua,但有些工具具有在 sql 代码之外定义这些参数的功能。