如何将多行数据发送到存储过程

时间:2014-05-04 21:42:53

标签: sql sql-server

我正在开发索引Web的索引器数据库,对于我用于调用存储过程的给定搜索查询,然后从java添加结果

我现在正试图在sql中完成所有操作

我向存储过程发送了多个单词,但它没有得到结果。当它与每个单词一起使用时,它会得到正常结果!

create procedure searchDictionary
@words nvarchar(max)
as
begin
    select distinct 
       WebPage.Address, WebPage.Title 
    from 
       WebPage 
    inner join 
       Paragraph on WebPage.ID = pageId 
    inner join 
       Dictionary on Dictionary.Id = keyword_id 
    where 
       Word in (@words);
end

exec searchDictionary N'protests, ukraine'

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是在SQL中将@words表示为逗号分隔的字符串:

例如:

"'a', 'b', 'c'"

然后使用动态SQL和sp_execSQL返回您的设置。

create proc searchDictionary

@words nvarchar(max)
as

declare @SQL varchar(max)    

set @SQL = 'select distinct WebPage.Address, WebPage.Title from WebPage inner join Paragraph on WebPage.ID = pageId inner join Dictionary on Dictionary.Id = keyword_id where Word in (' + @words + ');'

exec sp_execSQL @SQL

GO