这是我的程序:
PROCEDURE SP_SALARYADVANCE_RPT_TEST
(
txtExtraQuery IN STRING,
refcur OUT sys_refcursor )
OPEN refcur FOR
SELECT DISTINCT( SAL.ADVANCENO ), SALARYADVANCEID, SAL.TRANSDATE, SAL.APPROVEDREMARKS, SAL.APPROVEDAMOUNT, SAL.PAYRECAMOUNT, EMP.EMPLOYEENAME, EMP.EMPLOYEECODE
FROM HRM_SALARYADVANCE SAL, HRM_EMPLOYEE EMP, HRM_EMPLOYEEDEPARTMENTS DEPTS
WHERE SAL.EMPLOYEEID = EMP.EMPLOYEEID AND
SAL.EMPLOYEEID = DEPTS.EMPLOYEEID AND
DEPTS.DEPARTMENTID = txtdeptid || txtextraquery;
我的问题是我发送AND SAL.STATUS in (1,2,3)
作为参数这个1,2,3可能会改变我希望从前端传递它。
在解决此查询时,我收到了错误
ORA-01722:无效号码
答案 0 :(得分:1)
我猜你的“参数”AND SAL.STATUS in (1, 2, 3)
已放入txtExtraQuery
。当然,你不能像现在这样将它连接到现有的查询,因为那样你就会txtdeptid
与txtextraquery
连接起来。这没有任何意义。这就是为什么在与ORA-01722
DEPTS.DEPARTMENTID
错误的原因
您要执行的是运行EXECUTE IMMEDIATE
命令。看看这些链接:
但另一方面,我认为你应该重新设计你的程序。这看起来不太好。为什么不将VARRAY
或其他UDT
传递给您的程序?