gpt4 book ai didi

c# - 如何使用 ADO.NET 将 ref 变量传递给 SQL 存储过程?

转载 作者:行者123 更新时间:2023-12-02 21:51:49 25 4
gpt4 key购买 nike

我有使用 LINQ 调用存储过程以将一些数据保存到数据库中的代码,然后从存储过程返回两个变量。

[ASP.NET 代码]

dbDataContext dbo = new dbDataContext();
dbo.AddNewDoctor(doctorName, email, password, ref DocId, ref result);

[SQL]

create PROCEDURE [dbo].[AddNewDoctor]
@doctorname nvarchar(100),
@email nvarchar(100),
@password nvarchar(MAX),
@docId int out,
@Result int out

AS
BEGIN
SET NOCOUNT ON;
declare @idCounter int
select @idCounter = count(*) from dbo.doctors
if EXISTS (select * from dbo.doctors where e_mail = @email)
begin
SET @Result = -1
set @docId= 0
end
else
begin
INSERT INTO [dbo].[doctors]
([doctor_id]
,[doctorname]
,[e_mail]
,[password]
VALUES
((@idCounter +1)
,@docotorname
,@email
,@password
)
SET @Result = 1
set @docId= (@idCounter + 1)
end
END

这段代码工作得很好,我现在想要使用 ADO 而不是 LINQ,我的问题是我无法像 LINQ 中那样传递 ref 变量,所以我如何使用 ADO 来做到这一点

最佳答案

你必须做这样的事情。使用ParameterDirection

 SqlParameter output = new SqlParameter(paramName, dbType);
output.Direction = ParameterDirection.Output;
command.Parameters.Add(output);

在您的情况下,您必须使用SqlDbType.Int。使用 Value 属性读取返回值。

SqlParameter output = new SqlParameter(paramName, SqlDbType.Int);
output.Direction = ParameterDirection.Output;
command.Parameters.Add(output);

int Result = (int) output.Value; or int? Result = (int?) output.Value;

关于c# - 如何使用 ADO.NET 将 ref 变量传递给 SQL 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18481115/

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