-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)が に入れられていると思いますtxtExtraQuerytxtdeptidもちろん、それを既存のクエリに連結することはできませんtxtextraquery。そして、それは何の意味もありません。そのため、それORA-01722を比較するとエラーが発生しますDEPTS.DEPARTMENTID

あなたがしたいことは、EXECUTE IMMEDIATEコマンドを実行することです。これらのリンクをチェックしてください:

しかし一方で、手順を再設計する必要があると思います。これはあまりいい感じではありません。プロシージャにaVARRAYまたはその他を渡さないのはなぜですか?UDT

于 2011-03-31T07:33:31.693 に答える