Oracle / PL SQL curosr% не найден эквивалент в Teradata - PullRequest
1 голос
/ 01 ноября 2011

что эквивалентно Oracle CURSOR%NOTFOUND, найденному в Teradata?

Если нет, то как я могу перевести приведенный ниже код для запуска в Teradata.

OPEN OPEN_CUR1;
   LOOP
      FETCH OPEN_CUR1 INTO ... some variables ...;
      EXIT WHEN OPEN_CUR1%NOTFOUND;
CLOSE OPEN_CUR1;

Спасибо

1 Ответ

3 голосов
/ 01 ноября 2011

Подробную информацию об обработке и поведении CURSOR в Teradata смотрите на стр. 47 в http://www.info.teradata.com/do_redirect.cfm?itemid=062280010

В основном, эквивалент OPEN_CUR1%NOTFOUND от Oracle в Teradata состоит в том, что SQLSTATE установлен на 7362, а SQLCODE на '02000' ... для обработки вы можете проверить страницы 49, 76, 192- 198, 405 и след. вышеуказанного документа.

РЕДАКТИРОВАТЬ - согласно комментарию:

Из примера на стр. 49

CREATE PROCEDURE sp1 (OUT par1 CHARACTER(50))
BEGIN
DECLARE var1 INTEGER;
DECLARE projcursor CURSOR FOR
SELECT projid, projectdesc
FROM project;
OPEN projcursor;
WHILE (SQLCODE = 0)
FETCH projcursor INTO var1, par1;
END WHILE;
FETCH projcursor INTO var1, par1;
CLOSE projcursor;
END;

Они используют WHILE (SQLCODE = 0), что в основном означает «пока все хорошо и данные доступны».

...