You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAP B1的C#插件中读取存储过程的多结果集

SAP B1 C#插件读取存储过程多结果集解决方案

关于Recordset的可行性

SAP B1自带的Recordset对象无法读取存储过程返回的多个结果集,它仅能获取存储过程输出的第一个结果集,后续结果集没有对应的API可以获取,所以靠Recordset实现多结果集读取是行不通的。

替代方案:直接使用SAP HANA .NET驱动(ADO.NET方式)

通过SAP官方提供的HANA .NET驱动(Sap.Data.Hana.dll)直接连接数据库,就能支持遍历多个结果集,步骤和示例代码如下:

前置准备

确保项目引用了Sap.Data.Hana.dll,该文件通常位于SAP客户端安装目录的\SAP\SAP Business One SDK\DI API\或HANA客户端安装路径下,版本需与HANA服务器版本匹配。

示例代码

using Sap.Data.Hana;
using System.Data;

// 从SAP B1的Company对象中提取数据库连接信息(需确保oCompany已成功连接)
string hanaConnStr = $"Server={oCompany.Server};Database={oCompany.CompanyDB};UID={oCompany.DbUserName};PWD={oCompany.DbPassword};";

using (HanaConnection conn = new HanaConnection(hanaConnStr))
{
    conn.Open();
    
    // 使用参数化调用存储过程,避免SQL注入风险
    using (HanaCommand cmd = new HanaCommand("CALL P_TESTGMRMPLAN(@PlanId)", conn))
    {
        // 添加存储过程参数
        cmd.Parameters.Add(new HanaParameter("@PlanId", PlanId));
        
        // 执行命令并获取DataReader
        using (HanaDataReader reader = cmd.ExecuteReader())
        {
            // 处理第一个结果集
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    // 根据实际列名读取数据,示例:
                    string columnValue = reader["COLUMN_NAME_1"].ToString();
                    // 此处添加你的数据处理逻辑
                }
            }

            // 遍历后续所有结果集
            while (reader.NextResult())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        // 处理当前结果集的数据,示例:
                        int anotherValue = Convert.ToInt32(reader["COLUMN_NAME_2"]);
                        // 此处添加你的数据处理逻辑
                    }
                }
            }
        }
    }
}

关键注意事项

  • 参数化查询:替换原代码中的字符串拼接方式,避免SQL注入漏洞
  • 资源释放:使用using语句自动释放数据库连接、命令和DataReader资源,防止内存泄漏
  • 版本匹配:确保Sap.Data.Hana.dll的版本与HANA服务器版本一致,避免兼容性问题

内容的提问来源于stack exchange,提问作者neha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:32:53