Можно ли проверить код SQL на правильность синтаксиса с помощью VBA?
В моем сценарии пользователь вводит оператор SQL в текстовое поле пользовательской формы. Сначала я хотел бы проверить, является ли оператор SQL правильным с точки зрения синтаксиса, а во-вторых, проверить, является ли это оператором SELECT.
Что должна проверять проверка
- Правильно ли написаны ключевые слова SQL (которые можно использовать в инструкции SELECT)
- Порядок ключевых слов SQL
- Это утверждение является оператором SELECT
Подведение итогов комментариев
- СУБД - это Oracle
- Лист Excel не связан с базой данных Oracle.
- Лист Excel будет загружен в систему, а затем коды SQL будут выполнены в базе данных.
- Мне известно о возможности SQL-инъекции.
- Предоставленный оператор SQL должен быть проверен на правильность синтаксиса. Имена столбцов не проверяются, так как структура базы данных неизвестна.
SET NOEXEC ON
, запустить его и отловить любую ошибку - person Nick.McDermaid   schedule 30.11.2015DROP TABLE schema.table
, и он сбросит таблицу. Или они могут выполнить перекрестное соединение, из-за которого на сервере заканчивается временное пространство. - person Nick.McDermaid   schedule 30.11.2015NOEXEC
существует в PL-SQL - и они известны тем, что отвечают на вопросы только в том случае, если вы предоставляете точно правильную формулировку, что вроде бы опровергает суть здесь - но главное Ответ заключается в том, что вы заставляете РСУБД анализировать SQL, а не пытаетесь сделать это самостоятельно: и это, в свою очередь, может познакомить неопытного кодировщика с очень важным принципом программирования: НИКОГДА, НИКОГДА НЕ НАПИСЫВАЙТЕ ПАРСЕР, ЧТОБЫ СДЕЛАТЬ РАБОТУ, КОТОРАЯ СУЩЕСТВУЮЩИЙ ПАРСЕР МОЖЕТ СДЕЛАТЬ. - person Nigel Heffernan   schedule 30.11.2015False
. Я мог бы даже сделать подсчет таблиц и строк, чтобы предупредить об удалении или отбрасывании. Если вы действительно хотите проанализировать и выделить источник синтаксической ошибки в VBA, возможно, прислушайтесь к приведенному выше совету. - person Ambie   schedule 01.12.2015