我想根据从gui中选择的标准动态构建查询。这里是我的Oracle包,函数返回varchar2给出错误结果
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)';
这个样子,那么它失败。什么原因。
在此先感谢。
好绰号! – 2013-04-22 12:39:00
@EgorSkriptunoff谢谢。 :) – eatSleepCode 2013-04-22 13:14:37