oracle - Issue "ORA-01722: invalid number" error at many places has been created -
i getting error "ora-01722: invalid number" @ many places oracle driver. can point out workaround/solution?
pdoexception: select base.fid fid, base.uid uid, base.filename filename, base.uri uri, base.filemime filemime, base.filesize filesize, base.status status, base.timestamp timestamp {file_managed} base (base.fid in (:db_condition_placeholder_0)) (prepared: select base.fid fid, base."uid" "uid", base.filename filename, base.uri uri, base.filemime filemime, base.filesize filesize, base.status status, base.timestamp timestamp "file_managed" base (base.fid in (:db_condition_placeholder_0)) ) e: sqlstate[hy000]: general error: 1722 ocistmtexecute: ora-01722: invalid number (ext\pdo_oci\oci_statement.c:146) args: array ( [:db_condition_placeholder_0] => ) in drupaldefaultentitycontroller->load() (line 196 of c:\xampp\htdocs\new\drupal\includes\entity.inc).
without context, hard sure. i'm in guessing mood, here goes:
base.fid
numeric column. in :db_condition_placeholder_0
attempt pass string of tokens such "23, 42, 69"
.
now you're hoping sql engine munge produce line this:
where base.fid in (23, 42, 69)
alas, generates this:
where base.fid in ('23, 42, 69')
... logically same as:
where base.fid = to_number('23, 42, 69')
obviously string isn't valid number , hence ora-1722.
now tricky matter. there several different approaches, including nested tables or arrays, pipelined functions , dynamic sql. 1 suit best depends on details of requirement.
plus, of course, i'm guessing problem anyway :-)
Comments
Post a Comment