Ошибочные РТЫ Oracle 22905: не может получить доступ к строкам от объекта невложенной таблицы

У вас есть два варианта, оба должны работать:

a)

editText.setText("Your text");
editText.setSelection(editText.getText().length());

b)

editText.setText("");    
editText.append("Your text");
9
задан ZeissS 4 November 2011 в 08:22
поделиться

4 ответа

Вы должны объявить тип на «уровне базы данных», как предлагает ammoQ:

CREATE TYPE subjectid_tab AS TABLE OF NUMBER INDEX BY binary_integer;

вместо объявления типа в PL / SQL. Если вы объявите тип только в блоке PL / SQL, он не будет доступен для «движка» SQL.

11
ответ дан 4 December 2019 в 11:08
поделиться

У меня вчера была эта проблема.

DECLARE 
  TYPE number_table IS TABLE OF NUMBER;
  result_ids number_table := number_table();
BEGIN
  /* .. bunch of code that uses my type successfully */ 

  OPEN ? AS 
  SELECT * 
  FROM TABLE(CAST(result_ids AS number_table)); /* BOOM! */
END;

Это не удается обоими способами, описанными ранее при вызове из подпрограммы Java. Я обнаружил, что это произошло из-за того, что тип number_table не определен таким образом, чтобы его можно было экспортировать из базы данных. Этот шрифт внутренне отлично подходит для рутины. Но как только вы попытаетесь выполнить возвращаемый набор записей, который ссылается на него каким-либо образом (включая предложения IN?!?), Вы получите неопределенный тип данных.

Итак, решение действительно таково: СОЗДАТЬ ТИП myschema.number_table IS ТАБЛИЦА НОМЕРОВ; Затем отбросьте объявление типа из вашего блока и используйте объявление уровня схемы. Используйте квалификатор схемы для ссылки на тип, чтобы убедиться, что вы используете правильный.

2
ответ дан 4 December 2019 в 11:08
поделиться

you have to cast the results of the pipelined query so:

If your pipelined function returns a rowtype of varchar2 then define a type (for example )

CREATE OR REPLACE TYPE char_array_t is VARRAY(32) of varchar2(255);
select * from table(cast(fn(x) as user_type_t ) );

will now work.

1
ответ дан 4 December 2019 в 11:08
поделиться

Это хорошее решение. Вы не можете использовать таблицу(cast()), если тип, который вы приводите, находится в части DECLARE блока pl/sql. Вам РЕАЛЬНО нужно использовать CREATE TYPE my_type [...]. В противном случае возникнет исключение "cannot fetch row[...]".

2
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: