Jump to content
php.lv forumi

oci_bind_by_name padot NULL


paulis

Recommended Posts

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?

Link to comment
Share on other sites

Š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 by paulis
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...