Синтаксическая ошибка / проблемы без переменных при вызове процедуры в окне TOAD IV SQL

Цель: у меня есть процедура, которую я хочу вызвать в окне SQL Toad, чтобы просмотреть данные, которые она извлекает, но у меня возникают проблемы с тем, как я это делаю, и я хотел бы знать, как должен выглядеть синтаксис.

Особенности:

У меня есть процедура, которая принимает три var и OUT три var. Для простоты названия и типы следующие:

var1 VARCHAR2
var2 VARCHAR2
var3 NUMBER (длина: 22)
var4 PL / SQL TABLE (длина: 22)
var5 PL / SQL TABLE (длина: 22)
var6 PL / SQL ТАБЛИЦА (длина: 22)

В окне SQL у меня есть следующее:

DECLARE
paramOut4 TABLE("22");
paramOut5 TABLE("22");
paramOut6 TABLE("22");
BEGIN
SOME_SCHEMA.SOME_PROCEDURE('someString', 4, 2, paramOut4, paramOut5, paramOut6);
END;

Что дает мне ошибку:

ORA-06550: строка 2, столбец 21: PLS-00103: встретил символ ")", когда ожидалось одно из следующего:

идентификатор, заключенный в двойные кавычки, разделенный-идентификатор LONG_
двойной ref char timestamp интервал дата двоичный национальный
символ nchar Символ «идентификатор» был заменен на «)» для продолжения. ORA-06550: строка 3, столбец 21: PLS-00103: встретил символ ")", когда ожидалось одно из следующего:

идентификатор идентификатор с разделителями в двойных кавычках LONG_
двойной ref char отметка времени интервал дата двоичный национальный
символ nchar Символ «ORA-06550: строка 4, столбец 21: PLS-00103: встретил символ») "при ожидании одного из следующих:

идентификатор, заключенный в двойные кавычки, разделенный-идентификатор LONG_
двойной ref char timestamp интервал дата двоичный национальный
символ nchar Символ "an

Несмотря на то, что это должно быть число, а не строка для длины таблицы, я добавил двойные кавычки, потому что без них он жалуется:

ORA-06550: строка 2, столбец 17: PLS-00103: Обнаружен символ «22», когда ожидается одно из следующего:

прагма идентификатор идентификатор с разделителями в двойных кавычках текущий

И у меня там есть парен, потому что, когда я только что получил "ТАБЛИЦА", он жаловался на:

Произошла следующая ошибка:

ORA-06550: строка 2, столбец 16: PLS-00103: встретил символ ";" при ожидании одного из следующих событий:

(


person Kurt Wagner    schedule 29.05.2013    source источник


Ответы (1)


Перед объявлением переменных необходимо определить тип таблицы. Например, вы можете определить тип t_table для объявления переменных для числовых массивов:

DECLARE
  TYPE t_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  var4 t_table;
  var5 t_table;
  var6 t_table;
BEGIN
  SOME_SCHEMA.SOME_PROCEDURE('someString', 4, 2, paramOut4, paramOut5, paramOut6);
END;
person pablomatico    schedule 30.05.2013