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