我正在尝试构建一个字符串以使用 oci 将数组传递给 oracle。如果我编写字符串它工作正常,但如果我将它作为变量传递它会给出错误。
这工作正常:
$c = oci_pconnect ( $config ['db'] ['username'], $config ['db'] ['password'], $config ['db'] ['hostspec'] );
try {
$llamado = "DECLARE V_DNA_ARRAY M6_TEMP_DNA_TAB_TYPE:=M6_TEMP_DNA_TAB_TYPE();BEGIN V_DNA_ARRAY.extend(3); V_DNA_ARRAY(1) := O_M6_TEMP_DNA('91','92','93','94','95'); V_DNA_ARRAY(2) := O_M6_TEMP_DNA('96','97','98','99','910'); V_DNA_ARRAY(3) := O_M6_TEMP_DNA('911','912','913','914','915'); SINTRA.PKG_MEDULA.P_INSERT_TEMP_DNA ( V_DNA_ARRAY );END;";
$s = oci_parse ( $c, $llamado );
$r = oci_execute ( $s);
} catch ( Exception $e ) {
var_dump ( $r );
var_dump ( $e->$d->getMessage () );
die ( 'STOP' );
}
但是如果我这样做(因为值会改变)它会给我:
警告:oci_parse() 期望参数 1 是资源,在第 153 行的 C:\xampp\htdocs\cph_donante\inside\action\gsilva\insert.php 中给出的整数
警告:oci_execute() 期望参数 1 是资源,在第 154 行的 C:\xampp\htdocs\cph_donante\inside\action\gsilva\insert.php 中给出 null
$c = oci_pconnect ( $config ['db'] ['username'], $config ['db'] ['password'], $config ['db'] ['hostspec'] );
try {
$llamado = '"DECLARE V_DNA_ARRAY M6_TEMP_DNA_TAB_TYPE:=M6_TEMP_DNA_TAB_TYPE();BEGIN ';
$llamado .= 'V_DNA_ARRAY.extend('.count($c1).'); ';
foreach ($c1 as $c => $v){
$llamado .= 'V_DNA_ARRAY('.($c + 1).') := O_M6_TEMP_DNA('.$v.'); ';
}
$llamado .= 'SINTRA.PKG_MEDULA.P_INSERT_TEMP_DNA ( V_DNA_ARRAY );END;"';
$s = oci_parse ( $c, $llamado );
$r = oci_execute ( $s );
} catch ( Exception $e ) {
var_dump ( $r );
var_dump ( $e->$d->getMessage () );
die ( 'STOP' );
}
你能告诉我它是如何工作的吗?