summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Newnham <mark@newnhams.com>2026-03-24 12:50:42 -0600
committerGitHub <noreply@github.com>2026-03-24 12:50:42 -0600
commit99b4685b0b4ae6c4e833b41519294bb57f25bb9c (patch)
treefe917dc14f6f9e3543ec9849bb1c8c1679f40937
parent9236543c992a0f2d0abe624eb520c24fd88c878c (diff)
parent335bbff900fdbbb5b2182acbcb96e140e016e6ec (diff)
downloadadodb-99b4685b0b4ae6c4e833b41519294bb57f25bb9c.tar.gz
adodb-99b4685b0b4ae6c4e833b41519294bb57f25bb9c.tar.bz2
adodb-99b4685b0b4ae6c4e833b41519294bb57f25bb9c.zip
Merge pull request #1230 from ADOdb/1229-db2-remove-deprecation-warnings-when-preparing-a-stored-procedure-for-use
Fixes #1229 deprecation warning in prepareSp() in db2 driver
-rw-r--r--drivers/adodb-db2.inc.php49
1 files changed, 19 insertions, 30 deletions
diff --git a/drivers/adodb-db2.inc.php b/drivers/adodb-db2.inc.php
index e49b6557..10fabb0f 100644
--- a/drivers/adodb-db2.inc.php
+++ b/drivers/adodb-db2.inc.php
@@ -1599,7 +1599,7 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
*/
function prepareSp($procedureName,$parameters=false) {
- global $ADODB_FETCH_MODE;
+ //global $ADODB_FETCH_MODE;
$this->storedProcedureParameters = array('name'=>'',
'resource'=>false,
@@ -1609,74 +1609,60 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
'parameters'=>array(),
'keyvalue' => array());
- //$procedureName = strtoupper($procedureName);
- //$procedureName = $this->getTableCasedValue($procedureName);
-
- $savem = $ADODB_FETCH_MODE;
- $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
-
- $qid = db2_procedures($this->_connectionID, NULL , '%' , $procedureName );
-
- $ADODB_FETCH_MODE = $savem;
+ $qid = db2_procedures($this->_connectionID, '' , '%' , $procedureName );
- if (!$qid)
+ if (!$qid)
{
if ($this->debug)
ADOConnection::outp(sprintf('No Procedure of name %s available',$procedureName));
return false;
}
-
-
$this->storedProcedureParameters['name'] = $procedureName;
/*
* Now we know we have a valid procedure name, lets see if it requires
* parameters
*/
- $savem = $ADODB_FETCH_MODE;
- $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
-
- $qid = db2_procedure_columns($this->_connectionID, NULL , '%' , $procedureName , NULL );
- $ADODB_FETCH_MODE = $savem;
+ $procedureName = strtoupper($procedureName);
+ $qid = db2_procedure_columns($this->_connectionID, '', '%' , $procedureName , '' );
if (!$qid)
{
if ($this->debug)
ADOConnection::outp(sprintf('No columns of name %s available',$procedureName));
return false;
}
- $rs = new ADORecordSet_db2($qid);
- if (!$rs)
- return false;
-
+
$preparedStatement = 'CALL %s(%s)';
$parameterMarkers = array();
- while (!$rs->EOF)
- {
- $parameterName = $rs->fields[3];
+
+ while ($rs = db2_fetch_assoc($qid)) {
+
+ $parameterName = $rs['column_name'];
if ($parameterName == '')
{
$rs->moveNext();
continue;
}
- $parameterType = $rs->fields[4];
- $ordinalPosition = $rs->fields[17];
+ $parameterType = $rs['column_type'];
+ $ordinalPosition = $rs['ordinal_position'];
switch($parameterType)
{
case DB2_PARAM_IN:
case DB2_PARAM_INOUT:
$this->storedProcedureParameters['in'][$parameterName] = '';
+ if ($parameterType == DB2_PARAM_IN) {
break;
+ }
case DB2_PARAM_INOUT:
case DB2_PARAM_OUT:
$this->storedProcedureParameters['out'][$parameterName] = '';
break;
}
$this->storedProcedureParameters['index'][$parameterName] = $ordinalPosition;
- $this->storedProcedureParameters['parameters'][$ordinalPosition] = $rs->fields;
- $rs->moveNext();
-
+ $this->storedProcedureParameters['parameters'][$ordinalPosition] = array_values($rs);
+
}
$parameterCount = count($this->storedProcedureParameters['index']);
$parameterMarkers = array_fill(0,$parameterCount,'?');
@@ -1895,6 +1881,9 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
{
if ($this->debug)
ADOConnection::outp("Adding parameter to stored procedure");
+
+ $name = strtoupper($name);
+
if ($stmt[1] == $this->storedProcedureParameters['resource'])
return $this->storedProcedureParameter($stmt[1],
$var,