PHP调用ORA存储过程:ORA-01722无效数字

PHP调用ORA存储过程:ORA-01722无效数字,php,oracle,stored-procedures,Php,Oracle,Stored Procedures,我有一个ORA存储过程: procedure calc(数字编码、数字extLoan、数字loan、数字付款、数字持续时间、数字saleId、结果Lob out clob); (目前只有此标题可用) 我尝试过这个PHP调用(我直接使用oci.*函数,尽管我们为它们提供了一个包装器对象): $query='1!' 开始 计算( :代码, :贷款, :贷款, :付款, :持续时间, :萨利德, :结果); "完";; $stmt=oci\u parse($this->connection,$que

我有一个ORA存储过程:

procedure calc(数字编码、数字extLoan、数字loan、数字付款、数字持续时间、数字saleId、结果Lob out clob);
(目前只有此标题可用)

我尝试过这个PHP调用(我直接使用
oci.*
函数,尽管我们为它们提供了一个包装器对象):

$query='1!'
开始
计算(
:代码,
:贷款,
:贷款,
:付款,
:持续时间,
:萨利德,
:结果);
"完";;
$stmt=oci\u parse($this->connection,$query);
oci按名称绑定($stmt,':code',100,3,SQLT_INT);
oci按名称绑定($stmt,':extLoan',20000,9,SQLT_INT);
oci按名称绑定($stmt,':loan',50000,9,SQLT_INT);
oci按名称绑定($stmt,':payment',0,9,SQLT\u INT);
oci按名称绑定($stmt,':duration',60,3,SQLT_INT);
oci按名称绑定($stmt,':saleId',2211445,9,SQLT_INT);//连接,OCI_D_LOB);
oci_按名称绑定($stmt,':result',$desc,-1,oci_B_CLOB);
oci_执行($stmt,oci_默认值);//连接(查询);
$desc=oci_new_描述符($this->connection,oci_D_LOB);
oci_按名称绑定($stmt,':result',$desc,-1,oci_B_CLOB);
oci_执行($stmt,oci_默认值);//db->parseQuery('
声明
编码:=:编码;
extloan编号:=:extloan;
贷款编号:=:贷款;
付款编号:=:付款;
持续时间编号:=:持续时间;
saleId编号:=:saleId;
myclob-CLOB;
开始
计算(
代码,
外贷,
贷款,
付款
期间
萨利德,
myclob);
:myclob:=myclob;
当其他人
:myclob:=\'
\'|| code | \'
\“| | extloan | |” \“贷款” \“支付” \“持续时间” \“萨利德” \'; (完);;
删除了绑定,但是
CLOB
一个和输出(
$lob->load();
返回了正确的XML字符串,其中包含传入的所有值…


我想现在很明显,问题出在其他地方,描述符/clob biniding还可以…

在哪一行崩溃,在哪个模块中?@Sebas我没有看到过程主体,只有标题。调用
oci_execute()
后发生错误,而通过调试,我发现问题是由名称($stmt,':saleId',2211445,9,SQLT_INT)引起的
oci_bind_调用-正如评论所指出的那样…为什么您第一次列出的过程名称是
calc
,而在您的OCI示例中,您调用的是
flashcalc
?@Wolf只是由于不正确的混淆造成的一个输入错误…已编辑。未将
OCI\u D\u LOB
作为有效的
OCI\u新\u描述符
类型。您是否尝试过OCI\u数据类型\u LOB
saleId VARCHAR2(7) := '2211445';