Создание и циклический просмотр списка в хранимой процедуре сервера SQL - PullRequest
2 голосов
/ 20 января 2010

Есть ли способ объявить список элементов в хранимой процедуре сервера SQL с помощью T-SQL, а затем выполнить цикл по элементам?

Я пытаюсь сделать что-то вроде этого:1004 *

И в конце input_string будет 'my dg hs fls.'

Я знаю, что мы можем создать таблицу в хранимой процедуре.Это лучший способ сделать что-то подобное?

Ответы [ 4 ]

3 голосов
/ 20 января 2010

У вас есть несколько вариантов. OMG Пони один. Вы также можете использовать переменную таблицы (@) или временную таблицу (#). Основное различие между @ и # состоит в том, что таблица @ является переменной и хранит информацию в памяти, а таблица # хранит ее во временной базе данных (таким образом, что допускается дублирование, если на 2 или более копиях sp выполняется в то же время). Вы обнаружите, что если ваша таблица превышает несколько десятков записей, таблица @ может стать медленной. Это из-за того, как оно хранится. Прочитайте это от Stackoverflow для получения дополнительной информации. Кроме того, вы можете использовать цикл while, но если вы планируете иметь тонну столбцов во временной таблице, я бы использовал курсор, прочитайте статью msdn для получения дополнительной информации. Курсоры также позволяют легко перемещаться вперед и назад на вашем столе. Кроме того, если вы хотите, чтобы они были быстрыми, просто используйте опцию FAST FORWARD, которая делает их примерно такими же быстрыми, как цикл WHILE в SQL.

2 голосов
/ 20 января 2010

Использование:

DECLARE @input_string NVARCHAR(25)
DECLARE @ascii INT

SET @input_string = 'my dog has fleas.'
SET @ascii = 97

-- 97, 101, 105, 111, 117

WHILE @ascii <= 117
BEGIN

  SET @input_string = REPLACE(@input_string, CHAR(@ascii), '')

  SET @ascii = CASE @ascii 
                 WHEN 97 THEN 101
                 WHEN 101 THEN 105
                 WHEN 105 THEN 111
                 WHEN 111 THEN 117
               END
END

PRINT @input_string
1 голос
/ 20 января 2010

Вы можете использовать табличную переменную для временного хранения набора данных.

1 голос
/ 20 января 2010

Взгляните на Массивы и списки в SQL Server Не знаете, какая у вас версия SQL-сервера, поэтому выберите ту версию на этой странице, которая подходит вам

Кстати, для вашей проблемы вы можете просто заменить и заменить входной символ на ''

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