Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-01858: a non-numeric character was found where a numeric was expected

guest1991Jul 1 2016 — edited Jul 3 2016

This is my query:

DECLARE
randomString VARCHAR2(100);
userId NUMBER;
useTimestamp TIMESTAMP;

BEGIN

SELECT ID INTO userId FROM CC_USER WHERE EMAIL=:P8_EMAIL;

SELECT USE_TS INTO useTimestamp FROM (SELECT * FROM CC_USER_VERIFICATION_TOKEN WHERE USER_ID = userId ORDER BY EXPIRY_TS DESC) WHERE ROWNUM = 1;

IF (useTimestamp IS NULL) THEN
    UPDATE CC_USER_VERIFICATION_TOKEN SET USE_TS=SYSTIMESTAMP WHERE EXPIRY_TS =(select max(EXPIRY_TS) from CC_USER_VERIFICATION_TOKEN)
    and rownum = 1 and USER_ID=userId;
END IF;

SELECT dbms_random.string('X', 20) str INTO randomString FROM dual;
randomString := TO_CHAR(:TOKEN_TYPE_PASSWORD_RECOVERY) || randomString;
:P8_TOKEN := randomString;

SELECT ID INTO userId FROM CC_USER where UPPER(EMAIL)=UPPER(:P8_EMAIL);

INSERT INTO CC_USER_VERIFICATION_TOKEN(TOKEN, USER_ID, TOKEN_TYPE, EXPIRY_TS)
VALUES (randomString, userId, TO_NUMBER(:TOKEN_TYPE_PASSWORD_RECOVERY), :TOKEN_EXPIRY_DURATION);


EXCEPTION
    WHEN NO_DATA_FOUND THEN
    SELECT dbms_random.string('X', 20) str INTO randomString FROM dual;
    randomString := TO_CHAR(:TOKEN_TYPE_PASSWORD_RECOVERY) || randomString;
    :P8_TOKEN := randomString;

    SELECT ID INTO userId FROM CC_USER where UPPER(EMAIL)=UPPER(:P8_EMAIL);

    INSERT INTO CC_USER_VERIFICATION_TOKEN(TOKEN, USER_ID, TOKEN_TYPE, EXPIRY_TS)
    VALUES (randomString, userId, TO_NUMBER(:TOKEN_TYPE_PASSWORD_RECOVERY), v('TOKEN_EXPIRY_DURATION'));

END;

:TOKEN_EXPIRY_DURATION is Application Computation

:TOKEN_TYPE_PASSWORD_RECOVERY is a value in Substitution String

In table CC_USER_VERIFICATION_TOKEN: TOKEN is VARCHAR2(100), USER_ID is NUMBER, TOKEN_TYPE is NUMBER, EXPIRY_TS is TIMESTAMP

The error message

Logging exception:

Sqlerrm: ORA-01858: a non-numeric character was found where a numeric was expected

Backtrace: ORA-06512: at line 23

ORA-06512: at "SYS.DBMS_SYS_SQL", line 1815

ORA-06512: at "SYS.WWV_DBMS_SQL", line 1033

ORA-06512: at "SYS.WWV_DBMS_SQL", line 1047

ORA-06512: at "APEX_050000.WWV_FLOW_DYNAMIC_EXEC", line 895

ORA-06512: at "APEX_050000.WWV_FLOW_PROCESS_NATIVE", line 67

ORA-06512: at "APEX_050000.WWV_FLOW_PROCESS_NATIVE", line 1101

ORA-06512: at "APEX_050000.WWV_FLOW_PLUGIN", line 2014

ORA-06512: at "APEX_050000.WWV_FLOW_PROCESS", line 188

I have double checked and unable to find where my mistake is. If anyone can help me figure it out, it will be awesome. Thank you.

This post has been answered by fac586 on Jul 3 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 31 2016
Added on Jul 1 2016
9 comments
9,635 views