У вас есть два варианта, оба должны работать:
a)
editText.setText("Your text");
editText.setSelection(editText.getText().length());
b)
editText.setText("");
editText.append("Your text");
Вы должны объявить тип на «уровне базы данных», как предлагает ammoQ:
CREATE TYPE subjectid_tab AS TABLE OF NUMBER INDEX BY binary_integer;
вместо объявления типа в PL / SQL. Если вы объявите тип только в блоке PL / SQL, он не будет доступен для «движка» SQL.
У меня вчера была эта проблема.
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 ТАБЛИЦА НОМЕРОВ;
Затем отбросьте объявление типа из вашего блока и используйте объявление уровня схемы. Используйте квалификатор схемы для ссылки на тип, чтобы убедиться, что вы используете правильный.
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.
Это хорошее решение. Вы не можете использовать таблицу(cast()), если тип, который вы приводите, находится в части DECLARE блока pl/sql. Вам РЕАЛЬНО нужно использовать CREATE TYPE my_type [...]. В противном случае возникнет исключение "cannot fetch row[...]".