sql - 定义一个变量作为查询的结果
问题描述
我有一个date_from
可以在查询中使用的变量:
define date_from = '01.11.2019';
是否可以定义一个新变量作为查询的结果?以下语句不起作用:
define month_from = (select month_yyyymm from t_calendar where date_orig = '&date_from');
我正在使用 Oracle SQL Developer,我不想进入 PL/SQL。
解决方案
不可能直接做你想做的事。另请注意,替换变量(使用define
命令创建/分配并使用前导调用的变量&
)是 SQL*Plus 概念;它们由客户端软件进行预处理(在您的情况下是 SQL Developer,它理解并尊重大部分(即使不是全部)SQL*Plus)。
不过,您几乎可以使用new_value
该命令的 SQL*Plus 选项来做到这一点column
。它是这样的(由于您没有提供示例数据,因此未测试):
define date_from = '01.11.2019'
column month_yyyymm new_value month_from
select month_yyyymm from t_calendar where date_orig = '&date_from';
就是这样 - 此时变量month_from
存储month_yyyymm
查询返回的值。请注意,前两个命令是 SQL*Plus(脚本)命令;select
数据库本身只看到最后一条语句 , 。