【问题标题】:Save value into a variable in oracle db将值保存到 oracle db 中的变量中
【发布时间】:2017-07-13 10:49:53
【问题描述】:

我有一个查询,我必须多次使用它的结果。因此,我不想多次运行查询,而是将查询值保存到一个变量中,并多次使用它来加快查询速度。

例如:

声明 VARr = 从 TBT 中选择 M_DATE

【问题讨论】:

标签: sql oracle variables


【解决方案1】:

如果您想在交互式客户端中执行此操作,答案取决于客户端。对于 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;
/

【讨论】:

    【解决方案2】:

    如果你想存储查询的结果那么你需要使用一个 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;
    /
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 2015-10-07
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多