paulis Posted March 24, 2017 Report Share Posted March 24, 2017 Sveiki! Situācija tāda, ka oracle datu bāzē ir procedūra kuru man nav iespējams rediģēt. Procedūra pieņem skaitli, pēc kura atgriež citu skaitli: proc(num in out number(8)); Problēma tā, ka, lai dabūtu ārā to kas ir vajadzīgs, man ir jāpadod tukša vērtība NULL. <? ... $stid = oci_parse($conn, "begin proc(:num); end;"); $num = " "; oci_bind_by_name($stid, ":num", $num); oci_execute($stid); ?> Problēma tā, ka šādi es izsaucu kļūdas paziņojumu: Warning: oci_execute(): ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 1 Mēģināju gan iekš SQL to :num pārvērst ar funkciju to_number(:num) gan arī iekš oci_bind_by_name norādīt tipu SQLT_INT. Atpakaļ saņēmu attiecīgi kļūdas paziņojumus: ORA-06550: line 1, column 49: PLS-00363: expression 'TO_NUMBER(ISN)' cannot be used as an assignment target ORA-06550: line 1, column 7: PL/SQL: Statement ignored oci_execute(): ORA-01460: unimplemented or unreasonable conversion requested Jautājums - vai ir kāda ideja, kā es vēl varētu mēģināt padot procedūrai NULL vērtību? Quote Link to comment Share on other sites More sharing options...
aaxc Posted March 24, 2017 Report Share Posted March 24, 2017 It kā padot $num = null; nevajadzētu būt problēmai. Ko tev paziņo, ja tādu mēģini? Quote Link to comment Share on other sites More sharing options...
paulis Posted March 24, 2017 Author Report Share Posted March 24, 2017 (edited) Šajā gadījumā vērtība, kas tiek atgriezta, ir 8 simbolus gara. Līdz ar to es saņemu atpakaļ: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512 EDIT: Viss atrisinājās! Padevu null un norādiju, ka maxlength ir 8 baiti. <? ... $num = null; oci_bind_by_name($stid, ":num", $num, 8); ... ?> Edited March 24, 2017 by paulis Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.