Я думаю, что вы в конечном итоге напишете конкретные, случайные операторы SQL для каждого типа сервера базы данных. Конечно, я сделал.
Я был в вашей ситуации, включая намерение написать независимый от базы данных код, но в долгосрочной перспективе он просто не работает. Одна база данных, например, не будет обрабатывать многобайтовые строки, в то время как другая будет требовать их (например, SQL Server CE), это заставит вас использовать, например, Varchar или NVarchar для столбцов. Некоторые базы данных будут поддерживать многобайтовые строки, но с ужасной производительностью. Один будет использовать VARCHAR2 (Oracle), а все остальные будут использовать VARCHAR. Один будет обрабатывать BLOB-объекты одним способом, а другой - другим. Не начинайте меня с типами данных даты.
Вместо того, чтобы находить магическое подмножество языка SQL и типов данных, которое работает во всех базах данных, вам было бы разумнее искать метод / библиотеку доступа к данным, которая может скрыть различия для вас (возможно, некоторую библиотеку ORM, которая позволяет вам создавать объекты БД и обращаться к ним?)
Как я уже сказал, я был (и остаюсь) в вашей ситуации с необходимостью поддержки нескольких баз данных, и лучшее решение для меня - написать оптимальный код для каждой базы данных, а не пытаться найти типы данных SQL и код, который работает во всех из них (я не смог, не до удовлетворительного уровня).
Кроме того, вы сможете повысить производительность каждой БД, если создадите отдельный текст SQL для каждой базы данных (т. Е. Параметры, связанные с производительностью, которые вы можете указать при создании таблицы Oracle, которые вообще не применяются при создании таблица в любой другой базе данных).
Я говорю: не боритесь с синтаксическими различиями в разных базах данных, вы не победите. Лучше смириться с этими различиями и использовать их в максимально возможной степени.