我有一个查询使用命名参数调用 postgres 存储过程。该过程可以采用许多参数,其中大部分都有默认值,我只想使用几个。 SQL 看起来像这样:
SELECT {(mytable).*} FROM myStoredProc(:p1, _namedParam := TRUE);
我在 p1
中绑定(bind)并将 mytable
添加为一个实体。但是,我得到了 NHibernate.QueryException : Not all named parameters have been set: ['']
-- 它似乎来自于命名参数中的 :=
。
有没有办法避开那个冒号,这样我就可以通过这个了?我已经绑定(bind)了所有字符串等,但我不认为我可以像这样绑定(bind)语法,所以我需要 NHibernate 停止提示这个非参数。这个存储过程需要大约十几个参数,我在这里设置的是最后一个,所以我不想在我的 C# 代码中显式插入所有默认值。
最佳答案
而不是 :=
(在 documentation 中被称为“旧语法”)你可以使用 =>
:
SELECT {(mytable).*} FROM myStoredProc(:p1, _namedParam => TRUE);
现在我不记得在 PostgreSQL 语法中使用冒号的任何其他地方,除了像 <value>::<type>
这样的类型转换。 (例如 '1'::integer
)但它可以简单地替换为更通用的语法,如 cast(<value> as <type>)
或很快 <type> <value>
.
关于c# - 在 SQLQuery 中使用 ":=",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51178912/