如何将查询结果存储在sql中的变量中

时间:2014-03-18 13:55:38

标签: sql oracle substring store

我正在使用以下查询:

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。

2 个答案:

答案 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;