在一个表中使用两个参数进行搜索,其中一个是整数列表
问题描述:
我想创建一个存储过程以在我的web api中使用ASP.NET和C#。我那里有三列像这样的表:在一个表中使用两个参数进行搜索,其中一个是整数列表
Id |TranName|ConfigName
---|--------|----------
10 |ABC |abcd
11 |BDE |bdef
12 |FGH |fghi
13 |HIJ |hijk
的问题是,我使用另一个存储过程返回,我不得不使用搜索上表与TranName沿整数列表。因此,举例来说,给定一个整数列表9,10,11,12,13和TranName BDE找到相应的ConfigName(在这种情况下,我期望它匹配11为Id然后BDE为TranName并返回bdef作为ConfigName。
我对存储过程的代码如下所示。我创建一个表被用作一个参数来搜索在TransTable。
CREATE TYPE dbo.ScrapeTranList
AS TABLE
(
scrapeTranId int
);
GO
CREATE PROCEDURE [dbo].[GetConfigNameById]
-- Add the parameters for the stored procedure here
@list AS dbo.ScrapeTranList READONLY,
@TransName varchar = null
AS
BEGIN
SET NOCOUNT ON;
select ConfigName
from TransTable as T
where T.TranName = @TransName AND T.Id IN @list
END
有人可以帮我解决存储过程的代码?
答
您应该将您的表加入如下所示的表值参数中:
select ConfigName
from TransTable as T join @list L
on T.Id = L.scrapeTranId
where T.TranName = @TransName
+0
是的!这就是我需要的。谢谢! – Koolkirtzz
为什么不直接传入逗号分隔列表作为参数或更好,还是表参数? – scsimon
@scsimon我不明白你在提议什么。 – Koolkirtzz
检查您的索引候选人是创建索引TransTable(TranName)include(Id) –