gpt4 book ai didi

sql-server - 从SQL Server存储过程获取插入的ID和特定的错误消息

转载 作者:行者123 更新时间:2023-12-03 08:50:28 25 4
gpt4 key购买 nike

我正在使用dapper访问SQL Server2016。我有一个名为Country的表,其中包含一个自动增量ID,一个代码和一个标签。要添加一个新的国家,我的数据库中有以下存储过程:

CREATE PROCEDURE [dbo].[AddNewCountry]  
(
@Code varchar (50),
@Label varchar (50)
)
AS
BEGIN
INSERT INTO Country
VALUES(@Code,@Label)
END

我从存储库调用存储过程:
public class EmpRepository      
{
public SqlConnection con;

private void connection()
{
string constr = ConfigurationManager.ConnectionStrings["SqlConn"].ToString();
con = new SqlConnection(constr);

}
//To Add Employee details
public void AddCountry(CountryModel objCountry)
{
try
{
connection();
con.Open();
con.Execute("AddNewCountry", objCountry, commandType: CommandType.StoredProcedure);
con.Close();
}
catch (Exception ex)
{

throw ex;
}

}

如果我尝试添加代码已经存在的国家/地区,我想 抛出一个特定的错误消息,例如存储过程中的“国家已经存在”。

如果添加了国家,我想 抛出自动递增的id

因此,如果有人知道如何从存储过程中发送带有ID和ErrorMessage的对象,请告诉我。

最佳答案

正如Zohar Peled所说,我不会在这里抛出异常。
只需处理该过程中的返回消息即可。

这是一个例子:

CREATE PROCEDURE [dbo].[AddNewCountry] 
(
@Code varchar (50),
@Label varchar (50),
@Message VARCHAR OUTPUT,
@ID INT OUTPUT
)
AS
BEGIN
IF NOT EXISTS (SELECT 1 FROM Country WHERE Code = @Code)
BEGIN
INSERT INTO Country VALUES(@Code,@Label)
SET @ID = @@IDENTITY
SET @Message = 'Code inserted'
END
ELSE
BEGIN
SET @ID = 0
SET @Message = 'Code already exists'
END

SELECT @Message, @ID
END

关于sql-server - 从SQL Server存储过程获取插入的ID和特定的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com