我正在使用以下查询:
DECLARE
result varchar2(100);
BEGIN
select (systimestamp - (select date_time from test where id=2945134)) into result from dual;
SELECT SUBSTR(result, 3,1) Final_result
FROM DUAL;
END;
显示如下错误:
PLS-00428:这个SELECT语句中应该有一个INTO子句 06550. 00000 - “行%s,列%s:\ n%s”
原因:通常是PL / SQL编译错误。
我需要将第一个查询的结果值存储到结果变量中,然后使用该结果变量将substring (3,1)
显示为Final_result。
答案 0 :(得分:3)
DECLARE
result varchar2(100);
BEGIN
select substr((systimestamp - (select date_time from test where id=2945134)), 3,1)
into result
from dual;
dbms_output.put_line(result);
END;
/
但这是你正在做的非常可疑的事情。您依赖于隐式数据类型转换(interval
- > varchar
),如果您的NLS设置发生更改,这将无法正常工作。
您最好使用to_char()
将结果interval
格式化为适当的格式。
答案 1 :(得分:-1)
不是从同一个表中选择2,而只需1就足够了。 另外,作为练习,请始终尝试使用对象的完全限定名称
为什么需要“DUAL”表
DECLARE
@final_result varchar2(100);
BEGIN
select @final_result= SUBSTR((systimestamp - (select date_time from test where id=2945134)),3,1);
END;