【发布时间】:2013-04-22 12:14:25
【问题描述】:
我想根据从 gui 中选择的标准动态构建查询。这是我的 oracle 包,
CREATE OR REPLACE PACKAGE TestPkg
AS
g_lastnamelist VARCHAR2(50);
FUNCTION getLastName return VARCHAR2;
FUNCTION buildQuery(p_lastnamelist VARCHAR2);
END;
CREATE OR REPLACE PACKAGE BODY TestPkg
AS
FUNCTION getLastName return VARCHAR2
IS
BEGIN
RETURN replace(g_lastnamelist, '''', '');
END;
FUNCTION buildQuery(p_lastnamelist VARCHAR2);
IS
m_query varchar2(1000);
BEGIN
g_lastnamelist := p_lastnamelist;
m_query := 'SELECT * FROM emp WHERE last_name IN(TestPkg.getLastName)';
END;
END;
如果我在这里使用'SELECT * FROM emp WHERE last_name IN('||p_lastnamelist||')';,那么它会返回正确的记录,但如果我像这样使用'SELECT * FROM emp WHERE last_name IN(TestPkg.getLastName)';,那么它会失败。什么原因。
提前致谢。
【问题讨论】:
-
@EgorSkriptunoff 谢谢。 :)
标签: oracle where-clause dynamic-sql