Как избежать параметризации ODBC для знака вопроса? в пределах литералов и комментариев?
Я сталкиваюсь с проблемой, где у меня есть знаки вопроса "?" в моих сценариях SQL внутри комментариев вызывает проблемы. Когда я запускаю эти операторы через соединение ODBC с помощью функции Visual FoxPro SQLEXEC, эти символы рассматриваются как параметры, а VFP запрашивает значения.
Какие есть варианты работы с символами вопросительного знака в комментариях при использовании SQLEXEC? Я надеюсь, что я могу быть для кого-то, как отключить параметризацию, или в качестве альтернативы для некоторых, как экранировать эти символы перед передачей строк в качестве команд. До сих пор я не нашел никаких доказательств такого решения, поэтому мне кажется, что мне, возможно, придется удалить все комментарии, что нежелательно, поскольку они обычно создают операторы для хранимых процедур, и мы хотели бы сохранить эти комментарии. Я надеюсь, что у кого-то может быть более приятное решение, чем полное удаление комментариев.
2 ответа
Похоже, что это может быть известной проблемой, что SQLEXEC не учитывает комментарии в команде SQL при обнаружении символов вопросительного знака? которые обычно представляют параметры в ODBC и аналогично в VFP.
Просто предупреждение - парсер VFP поймает любой вопросительный знак в строке SQL, даже если он находится внутри комментария SQL (т.е. в строке, начинающейся с - или заключен в скобки между /* */), и выдаст ошибку, если там нет ничего, что может быть переменной. Если это может быть переменная, но вы не определили ее во время выполнения, вы получите уродливое поле ввода для ее ввода. Хуже того, ваш пользователь получает это.
Так что будьте осторожны. - Драган Неделькович
Вы пытались заменить его на код ASCII? Что-то вроде: '+chr(63)+'