我有一个查询,我必须多次使用它的结果。因此,我不想多次运行查询,而是将查询值保存到变量中一次,并多次使用它来加快查询速度。
例如:
声明VAr =从TBT中选择M_DATE
答案 0 :(得分:4)
如果您想在交互式客户端中执行此操作,答案取决于客户端。对于SQLPlus,您可以这样做:
VARIABLE my_date VARCHAR2(10);
BEGIN
SELECT to_char(sysdate, 'YYYY-MM-DD' ) INTO :my_date FROM dual;
END;
/
PRINT my_date;
SELECT * FROM my_table WHERE date_column = TO_DATE( :my_date, 'YYYY-MM-DD' );
请注意,SQLPlus的变量不支持DATE
类型,因此您需要在存储时转换为字符串,然后返回使用该值的日期。我建议始终使用显式转换和格式字符串,只是为了避免出现意外结果,如果默认格式不符合您的预期。
在PL / SQL块或过程中,它会更简单一些:
DECLARE
l_mydate DATE;
BEGIN
SELECT sysdate INTO l_mydate FROM dual;
SELECT whatever INTO l_whatever FROM my_table
WHERE date_column = l_mydate;
<etc...>
END;
/
答案 1 :(得分:0)
如果要存储查询结果,则需要使用select ... into;
var v_storedate VARCHAR2(19);
exec select m_date into :v_storedate from tbt;
print v_storedate;
对于匿名SQL块
begin
select m_date
into :v_storedate
from tbt;
end;
/