我有一个查询,该查询使用命名参数调用postgres存储过程。该过程可以使用许多参数,其中大多数具有默认值,我只想使用几个。 SQL看起来像这样:
SELECT {(mytable).*} FROM myStoredProc(:p1, _namedParam := TRUE);
我绑定p1
并将mytable
添加为实体。但是,我得到NHibernate.QueryException : Not all named parameters have been set: ['']
-似乎是来自命名参数中的:=
。
是否有逃脱冒号的方法,以便我可以越过这个冒号?我已经绑定了所有的字符串,但是我不认为可以绑定这样的语法,因此我需要NHibernate来停止抱怨这个非参数。此存储的proc需要大约十几个参数,而我在此处设置的参数是最后一个,因此,我宁愿不要在我的C#代码中显式插入所有默认值。
答案 0 :(得分:1)
您可以使用:=
代替=>
(在documentation中被称为“较旧的语法”):
SELECT {(mytable).*} FROM myStoredProc(:p1, _namedParam => TRUE);
目前,我不记得在PostgreSQL语法中使用冒号的其他任何地方,除了像<value>::<type>
(例如'1'::integer
这样的类型转换)外,它可以被更通用的语法代替,例如cast(<value> as <type>)
或不久之后的<type> <value>
。