У меня есть запрос postgresql, который имеет несколько параметров, я понимаю, как эти параметры, использующие OdbcCommand в C#, основаны на позиции, а не на имени, однако все параметры будут иметь одинаковое значение, мне интересно, есть ли способ присвоить значение параметра только один раз вместо четырех.
comm.Parameters.Add("@clientid", OdbcType.VarChar).Value = clientid;
вместо
comm.Parameters.Add("@clientid", OdbcType.VarChar).Value = clientid;
comm.Parameters.Add("@clientid", OdbcType.VarChar).Value = clientid;
comm.Parameters.Add("@clientid", OdbcType.VarChar).Value = clientid;
comm.Parameters.Add("@clientid", OdbcType.VarChar).Value = clientid;
Ниже приведен запрос, который я буду использовать
SELECT cp.blkofbusid AS LOB,
cp.clientid AS GroupID,
cp.locationname AS Division,
benefitplanid,
( select clientname from client where clientid=? and blkofbusid <> 'HOLD')
FROM clientpricovebenefitplan cp
LEFT OUTER JOIN clientlocation cl
ON cp.clientid = cl.clientid
AND cp.locationname = CASE WHEN cp.locationname <> 'N/A' THEN cl.locationname ELSE cp.locationname END
WHERE cp.clientid =?
AND cp.locationname IN
(
SELECT CASE
WHEN cpb.locationname <> 'N/A' AND (SELECT Count(a.locationname) FROM clientpricovebenefitplan a WHERE a.locationname <> 'N/A' AND a.clientid =? and blkofbusid <> 'HOLD') > 0 THEN
locationname
WHEN (SELECT Count(b.locationname) FROM clientpricovebenefitplan b WHERE b.locationname <> 'N/A' AND b.clientid =? and blkofbusid <> 'HOLD') = 0 THEN
'N/A'
END AS divcode
FROM clientpricovebenefitplan cpb
WHERE
cpb.clientid =?
)
ORDER BY
division