Source for file adodb-sapdb.inc.php
Documentation is available at adodb-sapdb.inc.php
V4.97 22 Jan 2008 (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 4 for best viewing.
Latest version is available at http://adodb.sourceforge.net
SAPDB data driver. Requires ODBC.
if (!defined('_ADODB_ODBC_LAYER')) {
include(ADODB_DIR. "/drivers/adodb-odbc.inc.php");
var $fmtDate = "'Y-m-d'"; /// used by DBDate() as the default date format used by the database
var $fmtTimeStamp = "'Y-m-d H:i:s'"; /// used by DBTimeStamp as the default timestamp fmt.
//if (strncmp(PHP_OS,'WIN',3) === 0) $this->curmode = SQL_CUR_USE_ODBC;
if (!$info['version'] && preg_match('/([0-9.]+)/',$info['description'],$matches)) {
$info['version'] = $matches[1];
return $this->GetCol("SELECT columnname FROM COLUMNS WHERE tablename=$table AND mode='KEY' ORDER BY pos");
$sql = "SELECT INDEXNAME,TYPE,COLUMNNAME FROM INDEXCOLUMNS ".
" WHERE TABLENAME=$table".
" ORDER BY INDEXNAME,COLUMNNO";
global $ADODB_FETCH_MODE;
$save = $ADODB_FETCH_MODE;
$ADODB_FETCH_MODE = $save;
while ($row = $rs->FetchRow()) {
$indexes[$row[0]]['unique'] = $row[1] == 'UNIQUE';
$indexes[$row[0]]['columns'][] = $row[2];
$indexes['SYSPRIMARYKEYINDEX'] = array(
'unique' => True, // by definition
'columns' => $this->GetCol("SELECT columnname FROM COLUMNS WHERE tablename=$table AND mode='KEY' ORDER BY pos"),
global $ADODB_FETCH_MODE;
$save = $ADODB_FETCH_MODE;
foreach($this->GetAll("SELECT COLUMNNAME,DATATYPE,LEN,DEC,NULLABLE,MODE,\"DEFAULT\",CASE WHEN \"DEFAULT\" IS NULL THEN 0 ELSE 1 END AS HAS_DEFAULT FROM COLUMNS WHERE tablename=$table ORDER BY pos") as $column)
$fld->max_length = $fld->type == 'LONG' ? 2147483647 : $column[2];
$fld->scale = $column[3];
$fld->not_null = $column[4] == 'NO';
$fld->primary_key = $column[5] == 'KEY';
if ($fld->has_default = $column[7]) {
if ($fld->primary_key && $column[6] == 'DEFAULT SERIAL (1)') {
$fld->auto_increment = true;
$fld->has_default = false;
$fld->default_value = $column[6];
$fld->default_value = $column[6];
$fld->default_value = trim($column[6]);
$retarr[$fld->name] = $fld;
$ADODB_FETCH_MODE = $save;
return $this->GetCol("SELECT columnname FROM COLUMNS WHERE tablename=$table ORDER BY pos");
// unlike it seems, this depends on the db-session and works in a multiuser environment
return empty($table) ? False : $this->GetOne("SELECT $table.CURRVAL FROM DUAL");
SelectLimit implementation problems:
The following will return random 10 rows as order by performed after "WHERE rowno<10"
select * from table where rowno < 10 order by 1
This means that we have to use the adoconnection base class SelectLimit when
See http://listserv.sap.com/pipermail/sapdb.general/2002-January/010405.html
|