如何在使用NHibernate对Informix数据库执行本机SQL查询时转义冒号(:)字符?

时间:2012-03-23 19:08:13

标签: .net nhibernate fluent-nhibernate informix

我正在尝试对Informix数据库执行一组本机SQL查询,使用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 个答案:

答案 0 :(得分:3)

我建议使用不使用冒号的演员表示法:

SELECT FIRST CAST(id AS INTEGER) INTO variable;

处理DATETIME和INTERVAL文字会比那更难。

相关问题