Передать строковый массив в PL / SQL из Pro * C - PullRequest
1 голос
/ 06 апреля 2011

У меня есть процедура в пакете

create or replace package MyPack
  type MyArr is table of varchar2(30) index by pls_integer;

  prodecure MyProc(p in MyArr);
end MyPack;

, и я хочу вызвать ее из Pro * C.Таким образом, у меня есть (все остальные функции не включены)

char my_arr[50][30] = {0};

EXEC SQL EXECUTE
  BEGIN
    MyPack.MyProc(:my_arr);
  END;
END-EXEC;

Когда я пытаюсь скомпилировать это, я получаю ошибку

"PLS-S-00418, тип привязки массива должен совпадатьТип строки таблицы PL / SQL "

Есть идеи, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2016

У меня была похожая проблема. Я пытался передать массив C ++,

char names[10][10] = { "Tom", "Dick", "Harry", ... };

к хранимой процедуре. Решением было объявить параметр процедуры как

TYPE NameTab IS TABLE OF CHAR(10) INDEX BY BINARY_INTEGER;
0 голосов
/ 06 апреля 2011

см. Пример программы 9: вызов хранимой процедуры Я думаю, что это соответствует вашему описанию.

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