Использование «: =» в SQLQuery - PullRequest
0 голосов
/ 04 июля 2018

У меня есть запрос, который вызывает хранимую процедуру postgres с именованными параметрами. Процедура может принимать много параметров, большинство из которых имеют значения по умолчанию, и я хочу использовать только пару. SQL выглядит так:

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

Я связываю p1 и добавляю mytable как сущность. Тем не менее, я получаю NHibernate.QueryException : Not all named parameters have been set: [''] - кажется, это от := в названном параметре.

Есть ли способ избежать этой толстой кишки, чтобы я мог пройти через это? Я уже связал все свои строки и тому подобное, но я не думаю, что могу связать синтаксис, как этот, поэтому мне нужен NHibernate, чтобы перестать жаловаться на этот непараметрический параметр. Этот хранимый процесс принимает что-то около дюжины или около того параметров, и тот, который я здесь устанавливаю, является последним, поэтому я бы не стал явно вставлять все значения по умолчанию в мой код C #.

1 Ответ

0 голосов
/ 05 июля 2018

Вместо := (который упоминается как "более старый синтаксис" в документации ) вы можете использовать =>:

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

Пока я не помню других мест, где двоеточие использовалось в синтаксисе PostgreSQL, кроме приведения типов, например <value>::<type> (например, '1'::integer), но его можно было бы просто заменить более общим синтаксисом, таким как cast(<value> as <type>) или в ближайшее время <type> <value>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...