Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用dataset从存储过程中获取返回值_C#_Asp.net_Sql Server - Fatal编程技术网

C# 如何使用dataset从存储过程中获取返回值

C# 如何使用dataset从存储过程中获取返回值,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有这个存储过程,我需要从中获取返回值 ALTER PROCEDURE [dbo].[sp_TenantDetails_insert] @TDtypeid NVARCHAR(10), @TDtypeEn NVARCHAR(50), @TDtypeAr NVARCHAR(50), @TDNameEn NVARCHAR(MAX), @TDNameAr NVARCHAR(MAX), @TDportfolionameEn NVARCHAR(MAX),

我有这个存储过程,我需要从中获取返回值

ALTER PROCEDURE [dbo].[sp_TenantDetails_insert]
    @TDtypeid NVARCHAR(10), 
    @TDtypeEn NVARCHAR(50), 
    @TDtypeAr NVARCHAR(50), 
    @TDNameEn NVARCHAR(MAX),
    @TDNameAr NVARCHAR(MAX),
    @TDportfolionameEn NVARCHAR(MAX), 
    @TDportfolionameAr NVARCHAR(MAX), 
    @TDpropertynameEn NVARCHAR(MAX), 
    @TDpropertynameAr NVARCHAR(MAX), 
    @TDoffice_code NVARCHAR(MAX),  
    @TDps_contract_hdr_code NVARCHAR(MAX),  
    @TDcivil_id NVARCHAR(MAX), 
    @TDmobile NVARCHAR(50), 
    @TDemail NVARCHAR(50), 
    @TDportfolio_code NVARCHAR(50),
    @TDproperty_code NVARCHAR(50),  
    @TDunit_nick_name NVARCHAR(MAX), 
    @TDstartdate NVARCHAR(50),
    @TDendtdate NVARCHAR(50), 
    @TDmon_rent NVARCHAR(50),
    @PayType NVARCHAR(50),
    @TDTotMonths INT
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @tenantid Int

    INSERT INTO tbl_ream_TenantDetails(R_typeId,R_typeEn, R_typeAr, R_tenantNameEn, R_tenantNameAr,R_portfolionameEn, R_portfolionameAr, R_propertynameEn, R_propertynameAr, R_office_code,  R_ps_contract_hdr_code,  R_civil_id, R_mobile,R_email, R_portfolio_code,R_property_code,  R_unit_nick_name, R_startdate,R_endtdate, R_mon_rent, R_pay_type, R_tot_months)
    VALUES (@TDtypeid, @TDtypeEn, @TDtypeAr, @TDNameEn, @TDNameAr, 
            @TDportfolionameEn, @TDportfolionameAr, @TDpropertynameEn, 
            @TDpropertynameAr, @TDoffice_code, @TDps_contract_hdr_code,  
            @TDcivil_id, @TDmobile, @TDemail, @TDportfolio_code, 
            @TDproperty_code, @TDunit_nick_name, @TDstartdate, @TDendtdate, 
            @TDmon_rent, @PayType, @TDTotMonths) 

    SET @tenantid = SCOPE_IDENTITY()

    RETURN @tenantid

    SET NOCOUNT OFF
END
我已经创建了一个数据集,并将其作为查询添加到数据集中

我尝试使用以下代码获取值,但它返回0,而不是
SCOPE\u IDENTITY()

 public int GetInsertId(string typeId, string typeEn, string typeAr, string tenantNameEn, string tenantNameAr, string portfolionameEn, string portfolionameAr, string propertynameEn, string propertynameAr, string office_code, string ps_contract_hdr_code, string civil_id, string mobile, string email, string portfolio_code, string property_code, string unit_nick_name, string startdate, string endtdate, string mon_rent, string pay_type, int tot_months)
    {

        try
        {
            //int objResult = 0;
            //DataTable dt = new DataTable();
            //dt = AdapterTenantSelectDetailsInsert.sp_TenantDetailsInsert(typeId, typeEn, typeAr, tenantNameEn, tenantNameAr, portfolionameEn, portfolionameAr, propertynameEn, propertynameAr, office_code, ps_contract_hdr_code, civil_id, mobile, email, portfolio_code, property_code, unit_nick_name, startdate, endtdate, mon_rent, pay_type, tot_months);
            //if (dt.Rows.Count > 0)
            //{
            //    DataRow UserRow = dt.Rows[0];
            //    objResult = int.Parse(UserRow[0].ToString()) ;
            //}

            //var test = AdapterTenantSelectDetailsInsert.sp_TenantDetails_insert(typeId, typeEn, typeAr, tenantNameEn, tenantNameAr, portfolionameEn, portfolionameAr, propertynameEn, propertynameAr, office_code, ps_contract_hdr_code, civil_id, mobile, email, portfolio_code, property_code, unit_nick_name, startdate, endtdate, mon_rent, pay_type, tot_months);
            int objResult = 0;
            objResult = Convert.ToInt32((AdapterTenantSelectDetailsInsert.sp_TenantDetails_insert(typeId, typeEn, typeAr, tenantNameEn, tenantNameAr, portfolionameEn, portfolionameAr, propertynameEn, propertynameAr, office_code, ps_contract_hdr_code, civil_id, mobile, email, portfolio_code, property_code, unit_nick_name, startdate, endtdate, mon_rent, pay_type, tot_months)));
            return objResult;

        }
        catch (Exception)
        {
            throw;
        }
    }

返回值可以通过命令上的
SqlParameter
和direction
ReturnValue
获得。我不知道您是否可以从正在使用的适配器添加或访问参数。正确的方法可能是使用
OUTPUT
参数而不是返回值。此外,建议用户存储过程名称避免使用前缀
sp
。该前缀用于表示系统存储过程。应避免使用sp前缀,因为其处理方式略有不同。sp不代表存储过程。它代表“特殊”,只应用于系统存储过程。