Как зациклить получение вывода в хранимой процедуре - PullRequest
0 голосов
/ 04 июля 2019

Я создаю хранимую процедуру для возврата 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 в заголовке. И если я сейчас выполню запрос выше, то результат будет похож на ниже-

https://ibb.co/XJ9GHtC

Теперь я вставил этот запрос в хранимую процедуру, как показано ниже. Но проблема в том, что мой запрос возвращает только идентификатор продукта, а не его название, поэтому мне нужно выполнить цикл, хотя эти идентификаторы продукта затем возвращают название продукта в качестве вывода для этой хранимой процедуры. Но запрос ниже не работает, так как я пропускаю часть цикла. Кто-нибудь может дать мне подсказку, как мне этого добиться? Таким образом, вывод вернет название продукта, а не его идентификатор ключа?

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 голосов
/ 04 июля 2019

Скорее всего, вам не нужен цикл, в зависимости от того, как вы хотите, чтобы ваш вывод использовался.

Если вы просто выполняете код SQL непосредственно внутри процедуры, не помещая его в переменную или цикл, то результаты будут возвращены непосредственно из хранимой процедуры в виде набора результатов. Это будет такой же результат, как если бы вы запускали SQL в окне запросов в SSMS.

Если вы хотите вернуть результаты в другом формате, в виде обычного текста, XML, JSON или чего-то еще, например CSV, у вас есть другие варианты. Дайте нам немного больше информации о том, как вы хотите использовать результаты, и мы можем оказать дополнительную помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...