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