sql - 如何在存储过程中循环获取make输出
问题描述
我正在创建一个存储过程来title
从名为Products
. Products
表包含名为 的列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。如果我现在运行上面的查询,我的结果看起来像下面 -
现在我已将此查询插入到如下存储过程中。但问题是 - 因为我的查询只返回产品的 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;
解决方案
您可能不需要循环,具体取决于您希望如何使用输出。
如果您只是直接在过程中执行 SQL 代码而不将其放入变量或循环中,那么结果将作为结果集直接从存储过程中返回。这与您在 SSMS 的查询窗口中运行 SQL 的结果相同。
如果您想以另一种格式、纯文本、XML、JSON 或 CSV 之类的其他格式返回结果,那么您还有其他选择。向我们提供有关您希望如何使用结果的更多信息,我们可以提供更多帮助。
推荐阅读
- javascript - React Class to Function 组件
- c++ - C ++中的擦除插入习语?
- kubernetes - 如何在 kubernetes 网络策略中将 digitalocean 负载均衡器列入白名单?
- python - 我们如何根据特定条件从 pandas 数据框中选择列?
- javascript - 使用数据属性动态加载脚本
- c# - WPF 如何替换 DatePicker 中的日历
- javascript - 尝试将 html 表打印为 pdf 时出错
- python - 在 python 中指定线性回归
- spring-boot - 我怎样才能弄清楚为什么我的 Thymeleaf 页面呈现如此缓慢?
- node.js - Node.js - Mosca 和 Heroku