【发布时间】:2019-07-31 19:44:53
【问题描述】:
我正在尝试在 Where 子句中使用此 Select:
select s.machine
from gv$session s
where s.sid = (select to_number(sys_context('USERENV','SID')) SID
from dual)
当我单独执行它时,它返回 'DHAS\TI07',但在 where 子句中
SELECT reg.MAQUINA
FROM REG_MAQUINA reg
WHERE to_char('DHAS\'||reg.MAQUINA) = (select s.machine
from gv$session s
where s.sid = (select to_number(sys_context('USERENV','SID')) SID
from dual))
不带任何行,问题是如果我在第二个查询中用硬编码结果'DHAS\TI07' 替换选择,它可以工作
【问题讨论】:
-
s.sid = (select to_number(sys_context('USERENV','SID')) SID from dual)可以简化为s.sid = to_number(sys_context('USERENV','SID') -
试过:DECLARE v_maq VARCHAR2(64); v_qam VARCHAR2(64);开始 --QUERY 1 select s.machine INTO v_maq from gv$session s where s.sid = to_number(sys_context('USERENV','SID')) AND ROWNUM = 1; --给出输出 - 'FEDL01' DBMS_OUTPUT.PUT_LINE(v_maq); - 结尾; --QUERY 2 SELECT UNIQUE reg.MAQUINA INTO v_qam FROM DBAMV.REG_MAQUINA reg WHERE to_char('DHAS\'||reg.MAQUINA) = v_maq; DBMS_OUTPUT.PUT_LINE(v_qam);结尾; --------------- ORA-01403: 未找到数据 ORA-06512: 在第 14 行
-
不要不将代码放入 cmets。 edit你的问题
-
我怀疑空格字符是从内部选择返回的。尝试:select '>'||s.machine||'