我在java中调用的过程中的数值或值错误

时间:2014-06-03 14:46:00

标签: java sql oracle

当我在我的可调用语句中调用java中的过程时,它表示我的代码中有数字或值错误。然而,当我试图在oracle数据库上单独运行SQL文件时,它运行正常。出现数字或值错误,我需要的结果非常好。所以我不明白为什么每当在我的java类中调用该过程时它就会继续说出错误。我试图找到所谓的错误所在的行,这里是......

以下是我的程序代码

CREATE OR REPLACE
PROCEDURE RENTING
(P_NNAME IN VARCHAR2,
P_ADD IN VARCHAR2,
P_PHONE IN NUMBER,
P_ORDER IN VARCHAR2,
P_EMP_ID IN NUMBER,
P_VALID OUT NUMBER,
P_OR_NO OUT NUMBER
)
IS
V_AVAI  TITLE.AVAILABLE%TYPE;
P_OR VARCHAR2(5000);
P_OR_2 VARCHAR2(5000);
ORD_NO NUMBER(6);
TID NUMBER(38);
NUM NUMBER(3);
CTR NUMBER(3);
GO NUMBER(1);
BEGIN
P_OR:=P_ORDER;
ORD_NO:=SEQ_ORDER_NO.NEXTVAL;

INSERT INTO TRANSACTIONS (ORDER_NO, CUST_NICKNAME, CUST_ADD, CUST_CONTACT)
VALUES (ORD_NO, P_NNAME, P_ADD, P_PHONE);

INSERT INTO RENTS (ORDER_NO,ORDERS,DATERENTED,EMP_ID,DATERETURNED)
VALUES (ORD_NO,P_OR,SYSDATE,P_EMP_ID,NULL);

LOOP
  CTR:=INSTR(P_OR,';');
  NUM:=LENGTH(P_OR);
  IF CTR!=0 THEN
    CTR:=CTR-1;
    P_OR_2:=SUBSTR(P_OR,1,CTR);
    TID:=TO_NUMBER(P_OR_2);        //here's the part of the conversion that is wrong in java
    CTR:=CTR+2;
    P_OR:=SUBSTR(P_OR,CTR,NUM);
    SELECT AVAILABLE 
    INTO V_AVAI
    FROM TITLE
    WHERE TITLE_ID=TID;
    IF V_AVAI!=0 THEN
      UP(TID);
      P_VALID:=1;
    ELSIF V_AVAI=0 THEN
      P_VALID:=0;
    END IF;
  ELSIF CTR = 0 THEN
    P_OR_2:=SUBSTR(P_OR,1,NUM);
    TID:=TO_NUMBER(P_OR_2);
    SELECT AVAILABLE 
    INTO V_AVAI
    FROM TITLE
    WHERE TITLE_ID=TID;
    IF V_AVAI!=0 THEN
      UP(TID);
      P_VALID:=1;
      P_OR_NO:=ORD_NO;
    ELSIF V_AVAI=0 THEN
      P_VALID:=0;
    END IF;
    GO:=1;
  END IF;
  EXIT WHEN GO=1;
END LOOP;
END RENTING;
/

1 个答案:

答案 0 :(得分:0)

在调试器中运行程序并评估参数。 也许你正试图把一个无法转换成NUMBER的字符串。