Ваш SQL оператор сервера должен выглядеть следующим образом. Здесь @IsSuccess
используется в качестве выходного параметра в SQL Server.
Примечание. Могут быть разные способы присвоения значения параметру @IsSuccess
, как я назначил -1
, 1
и 2
согласно логике c.
Вы можете попробовать это, если ваш основной столбец также является ключом идентификации.
SET @IsSuccess = (SELECT SCOPE_IDENTITY())
Вы также можете использовать . Предложение OUTPUT для операторов INSERT и DELETE .
Чтобы позвонить в C#, вы можете следовать этому предыдущему ответу .
CREATE PROCEDURE [dbo].[AddEditTax] @TaxCode INT
,@TaxName VARCHAR(40)
,@TaxValue NUMERIC(18, 3)
,@IsActive BIT
,@UserCode BIGINT
,@IsSuccess AS INT OUTPUT
AS
BEGIN
DECLARE @tempCode BIGINT
SET @IsSuccess = 0
IF (@TaxCode <= 0) -- ADD
BEGIN
SET @tempCode = (
SELECT ISNULL(MAX(TaxCode), 0) + 1 AS TaxCode
FROM Tax_Mst
)
IF (
NOT EXISTS (
SELECT *
FROM Tax_Mst
WHERE TaxName = @TaxName
)
)
BEGIN
INSERT INTO Tax_Mst (
TaxCode
,TaxValue
,TaxName
,IsActive
,CreatedBy
,CreatedDate
)
VALUES (
@tempCode
,@TaxValue
,@TaxName
,@IsActive
,@UserCode
,CONVERT(VARCHAR, getdate(), 109)
)
SET @IsSuccess = 1
END
ELSE
BEGIN
SET @IsSuccess = - 1
END
END
ELSE IF (@TaxCode > 0) -- Update
BEGIN
IF (
NOT EXISTS (
SELECT *
FROM Tax_Mst
WHERE TaxName = @TaxName
AND TaxCode <> @TaxCode
)
)
BEGIN
UPDATE Tax_Mst
SET TaxName = @TaxName
,TaxValue = @TaxValue
,ModifyBy = @UserCode
WHERE TaxCode = @TaxCode
SET @IsSuccess = 1
END
ELSE
BEGIN
SET @IsSuccess = 2
END
END
END
Я использую ниже метод для вызова вышеуказанной процедуры в C# классе.
public static int AddEditTax(Tax objTax)
{
int retVal = 0;
DbCommand objdbCmd;
try
{
String strDBName = BaseClass.GetDatabaseName();
Database ObjDB;
ObjDB = DatabaseFactory.CreateDatabase();
objdbCmd = ObjDB.GetStoredProcCommand("AddEditTax");
if (objTax.TaxCode.HasValue)
ObjDB.AddInParameter(objdbCmd, "TaxCode", DbType.Int32, objTax.TaxCode);
else ObjDB.AddInParameter(objdbCmd, "TaxCode", DbType.Int64, DBNull.Value);
ObjDB.AddInParameter(objdbCmd, "TaxName", DbType.String, objTax.TaxName);
ObjDB.AddInParameter(objdbCmd, "TaxValue", DbType.Decimal, objTax.TaxValue);
ObjDB.AddInParameter(objdbCmd, "IsActive", DbType.Boolean, objTax.Status);
ObjDB.AddInParameter(objdbCmd, "UserCode", DbType.Int64, objTax.CreatedBy.Value);
ObjDB.AddParameter(objdbCmd, "IsSuccess", DbType.Int32, ParameterDirection.Output, "", DataRowVersion.Default, null);
ObjDB.ExecuteNonQuery(objdbCmd);
if (ObjDB.GetParameterValue(objdbCmd, "IsSuccess") != DBNull.Value)
retVal = Convert.ToInt32(ObjDB.GetParameterValue(objdbCmd, "IsSuccess").ToString());
}
catch (Exception objEx)
{
ErrorLogDAL objErrorLogManager = new ErrorLogDAL();
objErrorLogManager.AddErrorLog(objEx);
objErrorLogManager = null;
}
finally
{
objdbCmd = null;
}
return retVal;
}
Значение выходного параметра на странице может использоваться следующим образом.
int isSuccess = Convert.ToInt32(TaxDAL.AddEditTax(objTax));
if (isSuccess == 1)
{
ScriptManager.RegisterStartupScript(this, typeof(Page), "Alert1", "alert('Record saved sucessfully.');", true);
return;
}
else if (isSuccess == 2)
{
PMessage.InnerHtml = "Record already exists";
PMessage.Attributes.Add("class", "errorMessageText");
PMessage.Visible = true;
return;
}
else
{
PMessage.InnerHtml = "Record not saved sucessfully";
PMessage.Attributes.Add("class", "errorMessageText");
PMessage.Visible = true;
return;
}
Вы можете сослаться на эту ссылку для ссылка .