Как избежать символа двоеточия (:) при выполнении собственных SQL-запросов к базе данных Informix с помощью NHibernate? - PullRequest
2 голосов
/ 23 марта 2012

Я пытаюсь выполнить набор собственных запросов SQL к базе данных Informix, используя NHibernate для создания запросов.Однако NHibernate настроен на изменение запроса, если он содержит двоеточия (они предположительно являются зарезервированными символами), и поэтому запрос не выполняется.Это пример собственного SQL-запроса:

    CREATE PROCEDURE procedure_name()
    ...
    SELECT FIRST id :: INTEGER INTO variable
    ...
    END PROCEDURE;

, который NHibernate преобразует в него, перед выполнением запроса

    CREATE PROCEDURE procedure_name()
    ...
    SELECT FIRST id ? INTEGER INTO variable
    ...
    END PROCEDURE;

В этот момент Informix выдает ошибку Invalid syntax.Там было некоторое обсуждение по этому вопросу, однако никаких правдоподобных ответов или обходных путей не показано.

Я хотел бы знать, существует ли способ перехода к двоеточию (путем изменения параметра или конфигурации в NHibernate или выполнения запроса по-другому).Я не возражаю против изменения запроса для Informix, но кажется, что он в конечном итоге окажется проблематичным при попытке выполнить другие типы запросов с двоеточиями в них.

Любые идеи или предложения приветствуются.Спасибо!

1 Ответ

3 голосов
/ 23 марта 2012

Я предлагаю использовать нотацию приведения, которая не использует двоеточия:

SELECT FIRST CAST(id AS INTEGER) INTO variable;

Обрабатывать литералы DATETIME и INTERVAL будет сложнее, чем это.

...