使用ExecuteSql从包含2列的表中检索列表
本文关键字:检索 列表 2列 ExecuteSql 包含 使用 | 更新日期: 2023-09-27 18:11:17
我试图从SQL命令检索列表。我正在做这个
当我用硬编码参数运行查询时,我得到了2列(B1BRNB, PREMIUM),但我无法使用下面的代码在c sharp中获得它们。我将感激任何帮助!
public class Premiums
{
public int B1BRNB { get; set; }
public double PREMIUM { get; set; }
public List<string> GetPremiums(string policyId)
{
var policy = _quoteRepository.GetPolicy(policyId);
string sql = "SELECT B1BRNB, SUM(SARPREM) AS PREMIUM " +
" FROM PMSPSA15BR JOIN (SELECT DISTINCT(B1J4TX),B1BRNB " +
" FROM ASB1CPPBR WHERE B1ASTX = '@PolicyId' AND B1ADNB = '@Module' ) a " +
" ON (B1J4TX = SARUNIT) " +
" WHERE POLICY0NUM = '@PolicyId' AND MODULE = '@Module' "+
" GROUP BY B1BRNB " +
" ORDER BY B1BRNB";
var match = _dataContext.ExecuteSql<Premiums>(
sql,
new DB2Parameter("@PolicyId", policy.Id),
new DB2Parameter("@Module", policy.Line.Module)).ToList();
return match;
}
在这里
"WHERE B1ASTX = '@PolicyId' AND B1ADNB = '@Module' ) a"
. . . . . . .
"WHERE POLICY0NUM = '@PolicyId' AND MODULE = '@Module' "
去掉单引号
"WHERE B1ASTX = @PolicyId AND B1ADNB = @Module ) a"
. . . . . . .
"WHERE POLICY0NUM = @PolicyId AND MODULE = @Module "
使用参数时,不要用引号将它们括起来,因为它们被视为字符串值