将之前学习达梦数据库递归用法的SQL语句封装为存储过程,然后使用SqlSugar在C#程序中调用。
打开达梦管理工具,在SCHOOL数据库的存储过程文件夹新建存储过程,这里需注意,存储过程名称及参数名称都需要大写,且参数名称不能与存储过程体内的属性重名。
存储过程创建过后,使用查询语句测试调用结果,如下图所示,主要是根据角色标识获取其下级角色列表。
达梦官网中介绍的SqlSugar调用存储过程主要有两种方式:
1)调用db.Ado.UseStoredProcedure().GetDataTable返回DataTable,然后从DataTable对象中获取数据;
2)调用db.Ado.UseStoredProcedure().SqlQuery返回指定数据类型的集合,数据类型定义应与存储过程返回的数据结果保持一致。
本文测试第二种方式,主要代码及执行结果如下所示,
public class SubRole
{
public string CNAME { get; set; } = string.Empty;
public string CID { get; set; } = string.Empty;
}
...
...
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Dm,
ConnectionString = "Server=127.0.0.1; User Id=XXXXXX; PWD=XXXXXX;SCHEMA=SCHOOL;DATABASE=SCHOOL",
IsAutoCloseConnection = true
});
var roleID = new SugarParameter("@ROLEID", "2");
var list = db.Ado.UseStoredProcedure().SqlQuery<SubRole>("GETSUBROLES", roleID);
foreach(var item in list)
{
Console.WriteLine($"{item.CNAME}:{item.CID}");
}
参考文献:
[1]https://www.donet5.com/home/doc?masterId=1&typeId=1198
[2]