Курсор красного смещения - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь получить максимальную длину каждого столбца таблицы в базе данных Redshift с помощью этого запроса:

select MAX(LEN(Trim(col1)))mx_len from tbl1;

и вставить результат в таблицу tmp, например:

tbl1 col1 50

Для этого я пытаюсь написать курсор в красное смещение, чтобы выбрать имя столбца один за другим и вставить данные в таблицу tmp. Я получаю имена столбцов из следующего запроса:

select columnname from information_schema.columns where table_name = 'tbl1'

, но не могу написать курсор, может кто-нибудь помочь мне с этим. Заранее спасибо.

1 Ответ

0 голосов
/ 19 апреля 2020

Вы не описали, как вы пытаетесь объявить курсор, поэтому немного сложно понять, в чем проблема. Поэтому я опишу общий путь c для создания и извлечения курсора.

Сначала курсор живет только в течение транзакции, поэтому вы должны начать и держать транзакцию открытой.

BEGIN;

Далее необходимо объявить курсор и какие данные он будет содержать.

DECLARE <cursor_name> CURSOR FOR SELECT X, Y, Z FROM ...

Затем вам нужно извлечь строку из курсора.

FETCH FORWARD 1 FROM <cursor_name>; 

Затем получить следующую строку.

FETCH NEXT FROM <cursor_name>;

И так далее, и дальше. Когда закончите, закройте курсор и завершите транзакцию.

CLOSE <cursor_name>;
END;

Это то, что вы делаете? Это не работает?

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