当我在我的可调用语句中调用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;
/
答案 0 :(得分:0)
在调试器中运行程序并评估参数。 也许你正试图把一个无法转换成NUMBER的字符串。