在SQLQuery中使用“:=”

时间:2018-07-04 17:57:54

标签: c# postgresql nhibernate

我有一个查询,该查询使用命名参数调用postgres存储过程。该过程可以使用许多参数,其中大多数具有默认值,我只想使用几个。 SQL看起来像这样:

SELECT {(mytable).*} FROM myStoredProc(:p1, _namedParam := TRUE);

我绑定p1并将mytable添加为实体。但是,我得到NHibernate.QueryException : Not all named parameters have been set: [''] -似乎是来自命名参数中的:=

是否有逃脱冒号的方法,以便我可以越过这个冒号?我已经绑定了所有的字符串,但是我不认为可以绑定这样的语法,因此我需要NHibernate来停止抱怨这个非参数。此存储的proc需要大约十几个参数,而我在此处设置的参数是最后一个,因此,我宁愿不要在我的C#代码中显式插入所有默认值。

1 个答案:

答案 0 :(得分:1)

您可以使用:=代替=>(在documentation中被称为“较旧的语法”):

SELECT {(mytable).*} FROM myStoredProc(:p1, _namedParam => TRUE);

目前,我不记得在PostgreSQL语法中使用冒号的其他任何地方,除了像<value>::<type>(例如'1'::integer这样的类型转换)外,它可以被更通用的语法代替,例如cast(<value> as <type>)或不久之后的<type> <value>