如何在存储过程中循环获取make输出

时间:2019-07-04 09:58:04

标签: sql sql-server

我正在创建一个存储过程,以从名为title的表名返回某些产品的ProductsProducts表包含名为title的列。在我的sql服务器上,它已经为表Product和称为title的列启用了全文索引。在下面给出了赤裸裸的查询-

SELECT TOP 10000 KEY_TBL.[KEY] FROM CONTAINSTABLE (Products, Title, 'pot') AS KEY_TBL ORDER BY RANK DESC

注意:pot是关键字,我正在使用Microsoft sql server

因此,基本上,它将返回标题上具有行进关键字pot的那些产品ID。如果我现在运行以上查询,我的结果看起来像是波纹管

https://ibb.co/XJ9GHtC

现在,我已将此查询插入到存储过程中,例如波纹管。但问题是-由于我的查询仅返回产品ID,而不返回其标题,因此我需要循环查看这些产品ID,然后将这些产品标题作为此存储过程的输出返回。但是查询波纹管不起作用,因为我缺少它的循环部分。任何人都可以给我提示我该如何实现?因此输出将返回产品标题,而不仅仅是其键ID?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetProductsByKeyword] 
    @Keyword nvarchar(255) = null
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @ItemsTable TABLE(
    title nvarchar(250)
    )


    DECLARE @Query NVARCHAR(MAX)

    SET @Query='SELECT TOP 10000 KEY_TBL.[KEY] FROM CONTAINSTABLE (Products, Title, @Keyword) AS KEY_TBL ORDER BY RANK DESC'





SELECT * FROM @ItemsTable           

    SET NOCOUNT OFF;

END;

1 个答案:

答案 0 :(得分:0)

根据您希望如何使用输出,您可能不需要循环。

如果仅在过程内部直接执行SQL代码而不将其放入变量或循环中,则结果将作为结果集直接从存储过程中返回。就像在SSMS的查询窗口中运行SQL一样,结果也是如此。

如果要以其他格式(纯文本,XML,JSON或CSV等其他格式)返回结果,则可以有其他选择。 给我们更多有关您如何使用结果的信息,我们可以提供更多帮助。