Увы, в 11g нам все равно придется использовать наши собственные токенизаторы PL / SQL, используя типы SQL. В 11gR2 Oracle предоставила нам агрегирующую функцию для объединения результатов в строку CSV, поэтому, возможно, в 12i они предоставят обратную возможность.
Если вы не хотите создавать тип SQL, вы можете использовать встроенный SYS.DBMS_DEBUG_VC2COLL, например:
create or replace function string_tokenizer
(p_string in varchar2
, p_separator in varchar2 := ',')
return sys.dbms_debug_vc2coll
is
return_value SYS.DBMS_DEBUG_VC2COLL;
pattern varchar2(250);
begin
pattern := '[^('''||p_separator||''')]+' ;
select trim(regexp_substr (p_string, pattern, 1, level)) token
bulk collect into return_value
from dual
where regexp_substr (p_string, pattern, 1, level) is not null
connect by regexp_instr (p_string, pattern, 1, level) > 0;
return return_value;
end string_tokenizer;
/
Здесь он находится в действии:
SQL> select * from table (string_tokenizer('one, two, three'))
2 /
COLUMN_VALUE
----------------------------------------------------------------
one
two
three
SQL>
Подтверждение: этот код является вариантом кода I найденный в блоге Tanel Poder .
Ваш вопрос немного неясен.
Если ваш вопрос только в том, возможно ли это или нет:
Нет! (по крайней мере, не так, как вы ожидаете)
что-нибудь в этом блоке: 118]
if (GUILayout.Button("Search"))
{
...
}
выполняется только в тот момент, когда кнопка фактически нажата.
1110 Итак, вы должны сделать это так, как вы уже это сделали. Возможно добавление дополнительной проверки для отображения только тех полей, если список не пуст:
// only show the button while the list is empty
if(gameobjecttest.Count == 0)
{
if (GUILayout.Button("Search"))
{
...
}
// skip the rest
return;
}
// otherwise show the list
EditorGUILayout.BeginHorizontal();
{
scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(300), GUILayout.Height(400));
{
foreach (GameObject go in gameobjecttest)
{
EditorGUILayout.LabelField(go.name);
}
}
EditorGUILayout.EndScrollView();
}
EditorGUILayout.EndHorizontal();
(я обычно добавляю эти {
}
для очистки кода немного)
EditorGUI.BeginDisabledGroup(gameobjecttest.Count != 0);
{
if (GUILayout.Button("Search"))
{
...
}
}
EditorGUI.EndDisabledGroup();