Oracle / PL SQL curosr% не найден эквивалент в Teradata

#oracle #stored-procedures #plsql #cursor #teradata

#Oracle #хранимые процедуры #plsql #курсор #teradata

Вопрос:

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

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

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

Спасибо

Ответ №1:

Для получения подробной информации об обработке / поведении курсора в Teradata см. Стр. 47 в http://www.info.teradata.com/do_redirect.cfm?itemid=062280010

В основном эквивалентом OPEN_CUR1%NOTFOUND from 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) , что означает в основном «пока все в порядке и данные доступны».

Комментарии:

1. Спасибо за быстрый ответ и предоставление документации. Я уже просмотрел документацию, но мне нужен был точный пример того, что может заменить курсор, который не найден. Есть ли какое-либо SQLState, которого будет достаточно?

2. см. Мою ПРАВКУ выше… Я по-прежнему настоятельно рекомендую прочитать разделы о обработчиках SQLSTATE и т. Д.