-1

这是我的程序:

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: 无效号码

4

1 回答 1

1

我猜您的“参数”AND SAL.STATUS in (1, 2, 3)已放入txtExtraQuery. 当然,您不能像以前那样将其连接到现有查询,因为那样的话您将txtdeptidtxtextraquery. 而这没有任何意义。这就是为什么你得到一个ORA-01722错误,当与DEPTS.DEPARTMENTID

你想要做的是运行一个EXECUTE IMMEDIATE命令。查看这些链接:

但另一方面,我认为你应该重新设计你的程序。这看起来不太好。为什么不将 aVARRAY或其他一些传递UDT给您的程序?

于 2011-03-31T07:33:31.693 回答