Oracle 如何在sql中向传递字符串以执行并生成外部查询的输出
我在oracle存储过程中有一个变量Oracle 如何在sql中向传递字符串以执行并生成外部查询的输出,oracle,Oracle,我在oracle存储过程中有一个变量 GDFCID_STRING2 VARCHAR2(1000); GDFCID_STRING := ' select regexp_substr(''1005771621,1001035181'',''[^,]+'', 1, level) from dual connect by regexp_substr(''1005771621,1001035181'', ''[^,]+'', 1, level) is not null '; 我想使用该变
GDFCID_STRING2 VARCHAR2(1000);
GDFCID_STRING := ' select regexp_substr(''1005771621,1001035181'',''[^,]+'', 1, level) from dual
connect by regexp_substr(''1005771621,1001035181'', ''[^,]+'', 1, level) is not null ';
我想使用该变量在in子句中执行相同的查询,如下->
在存储过程中,我有一个sql->
select * from xyz where gfcid in
(--here I want to execute the above query (GDFCID_STRING)
and feed the output of query as input to IN clause--)
只需将查询放入
in子句
本身即可。不需要动态执行它
SELECT *
FROM xyz
WHERE gfcid IN (SELECT Regexp_substr('1005771621,1001035181', '[^,]+', 1, LEVEL
)
FROM dual
CONNECT BY Regexp_substr('1005771621,1001035181', '[^,]+', 1,
LEVEL)
IS NOT
NULL)
例如,让我们使用EMP
表查看一个测试用例:
SQL> SELECT empno,
2 ename,
3 deptno
4 FROM emp
5 WHERE ename IN
6 (
7 SELECT Regexp_substr('SMITH,SCOTT','[^,]+', 1, LEVEL)
8 FROM dual
9 CONNECT BY Regexp_substr('SMITH,SCOTT', '[^,]+', 1, LEVEL) IS NOT NULL)
10 /
EMPNO ENAME DEPTNO
---------- ---------- ----------
7369 SMITH 20
7788 SCOTT 20
SQL>