我正在尝试对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的查询,但是当尝试使用冒号执行其他类型的查询时,它最终会被证明是麻烦的。
欢迎任何想法或建议。谢谢!
答案 0 :(得分:3)
我建议使用不使用冒号的演员表示法:
SELECT FIRST CAST(id AS INTEGER) INTO variable;
处理DATETIME和INTERVAL文字会比那更难。