public function DatabaseSchema_sqlsrv::getCollation in Drupal driver for SQL Server and SQL Azure 7.3
Same name and namespace in other branches
- 7 sqlsrv/schema.inc \DatabaseSchema_sqlsrv::getCollation()
- 7.2 sqlsrv/schema.inc \DatabaseSchema_sqlsrv::getCollation()
Get the collation of current connection wether it has or not a database defined in it.
Parameters
string $table:
string $column:
Return value
string
File
- sqlsrv/
schema.inc, line 1288 - Database schema code for Microsoft SQL Server database servers.
Class
Code
public function getCollation($table = NULL, $column = NULL) {
// No table or column provided, then get info about
// database (if exists) or server defaul collation.
if (empty($table) && empty($column)) {
// Database is defaulted from active connection.
$options = $this->connection
->getConnectionOptions();
$database = $options['database'];
if (!empty($database)) {
// Default collation for specific table.
$sql = "SELECT CONVERT (varchar, DATABASEPROPERTYEX('{$database}', 'collation'))";
return $this->connection
->query_direct($sql)
->fetchField();
}
else {
// Server default collation.
$sql = "SELECT SERVERPROPERTY ('collation') as collation";
return $this->connection
->query_direct($sql)
->fetchField();
}
}
$sql = <<<EOF
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = :schema
AND TABLE_NAME = :table
AND COLUMN_NAME = :column
EOF;
$params = array();
$params[':schema'] = $this->defaultSchema;
$params[':table'] = $table;
$params[':column'] = $column;
$result = $this->connection
->query_direct($sql, $params)
->fetchObject();
return $result->COLLATION_NAME;
}