gpt4 book ai didi

linq - SQL 存储过程中的可选参数

转载 作者:行者123 更新时间:2023-12-02 05:53:46 25 4
gpt4 key购买 nike

我正在尝试创建一个具有可选参数的存储过程。我遵循了列出的说明 here .我还引用了这个 SO question .但是我不断收到以下错误:

Error converting data type varchar to int.

当我执行它时它起作用

EXEC sp_get_user {id#}

EXEC sp_get_user NULL, {username}

但失败了

EXEC sp_get_user {username}

存储过程

@id int = NULL,
@username nvarchar(50) = NULL

SELECT
username = COALESCE(a.Username, b.Username),
password = COALESCE(a.Password, b.Password),
signup_date = COALESCE(a.SignedUpOn, b.Signup_Date)
FROM table1 a
FULL OUTER JOIN table 2 b
ON a.ID = b.ID
WHERE ((a.ID = @id OR @id IS NULL)
AND (a.Username = @username OR @username IS NULL)
OR (b.ID = @id OR @id IS NULL)
AND (b.Username = @username OR @username IS NULL))

我尝试添加 OPTION(RECOMPILE) 但没有成功。我想让它动态化,这样其他开发人员就可以调用这个 SP,而不必每次都指定所有参数。如果有所不同,他们将通过 LINQ 进行连接。

最佳答案

在这种情况下使用命名参数

EXEC sp_get_user @username = {username}

如果两个参数都是可选的,SQL Server 将按位置进行排序,因此您传入的第一个参数将映射到过程中的第一个

关于linq - SQL 存储过程中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587494/

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