gpt4 book ai didi

c# - 在 SQLQuery 中使用 ":="

转载 作者:行者123 更新时间:2023-11-29 13:14:14 27 4
gpt4 key购买 nike

我有一个查询使用命名参数调用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com