allenyangb
新手上路

UID 104914
精华
0
积分 7
帖子 3
金钱 7 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-12-27
状态 离线
|
PHP调用ORACLE存储过程的问题
PHP调用ORACLE存储过程的问题
我现在有两个ORACLE的存储过程,接口如下 :
PROCEDURE CreerPersonne (
p_creation IN LST_COUPLE,
p_idpersonne OUT VARCHAR2,
p_infoErreur OUT INFOERREUR )
PROCEDURE GestionUnifieeCA (
p_idpersonne IN VARCHAR2,
p_liste_idca_notif OUT LST_VARCHAR2,
p_infoErreur OUT INFOERREUR)
其中LST_COUPLE, LST_VARCHAR2, INFOERREUR是自定义的数据类型 :
TYPE COUPLE AS OBJECT (
cle VARCHAR2(30),
valeur VARCHAR2(255)
);
TYPE LST_COUPLE IS TABLE OF COUPLE;
TYPE LST_VARCHAR2 IS TABLE OF VARCHAR2(500);
TYPE INFOERREUR AS OBJECT (
codeRetour VARCHAR2(3),
codeErreur VARCHAR2(10),
libelleErreur VARCHAR2(1000)
);
我想用PHP调用这两个存储过程。问题是,参数是自定义的数据类型,所以我不知道应该在PHP中怎么绑定变量。
<?php
$user = "scott"; //数据库用户名
$password = "tiger"; //密码
$conn_str = "tnsname"; //连接串(cstr : Connection_STRing)
$remote = true //是否远程连接
if ($remote) {
$conn = OCILogon($user, $password, $conn_str);
}
else {
$conn = OCILogon($user, $password);
}
$p_creation; //问题在这里,不知道应该是什么类型的变量
$p_idpersonne;
$p_infoErreur;
$sql_sp = "BEGIN CreerPersonne (:p_creation, :p_idpersonne, :p_infoErreur); END;";
$stmt = OCIParse($conn, $sql_sp);
OCIBindByName($stmt, ":p_creation", $p_creation, 16);
OCIBindByName($stmt, ":p_idpersonne", $p_idpersonne, 30);
OCIBindByName($stmt, ":p_infoErreur", $p_infoErreur, 30);
//Execute
OCIExecute($stmt);
?>
执行时ORACLE会报错:参数数据类型错误
试过很多次,绑定array类型的变量也不对.
请用ORACLE+PHP的朋友解答一下,不胜感激
|
|