1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Nette\Database\Drivers;
13:
14: use Nette;
15:
16:
17:
18: 19: 20: 21: 22:
23: class MsSqlDriver extends Nette\Object implements Nette\Database\ISupplementalDriver
24: {
25:
26: public $supports = array('meta' => TRUE);
27:
28:
29: private $connection;
30:
31:
32:
33: public function __construct(Nette\Database\Connection $connection, array $options)
34: {
35: $this->connection = $connection;
36: }
37:
38:
39:
40:
41:
42:
43:
44: 45: 46:
47: public function delimite($name)
48: {
49:
50: return '[' . str_replace(array('[', ']'), array('[[', ']]'), $name) . ']';
51: }
52:
53:
54:
55: 56: 57:
58: public function formatDateTime(\DateTime $value)
59: {
60: return $value->format("'Y-m-d H:i:s'");
61: }
62:
63:
64:
65: 66: 67:
68: public function formatLike($value, $pos)
69: {
70: $value = strtr($value, array("'" => "''", '%' => '[%]', '_' => '[_]', '[' => '[[]'));
71: return ($pos <= 0 ? "'%" : "'") . $value . ($pos >= 0 ? "%'" : "'");
72: }
73:
74:
75:
76: 77: 78:
79: public function applyLimit(&$sql, $limit, $offset)
80: {
81:
82: if ($limit >= 0) {
83: $sql = 'SELECT TOP ' . (int) $limit . ' * FROM (' . $sql . ') t';
84: }
85:
86: if ($offset) {
87: throw new Nette\NotImplementedException('Offset is not implemented.');
88: }
89: }
90:
91:
92:
93: 94: 95:
96: public function normalizeRow($row, $statement)
97: {
98: return $row;
99: }
100:
101: }
102: