Използвам H2 DB v1.4.182 за моята тестова среда. Той действа като заместител на Oracle, който е производственият доставчик. Имам няколко псевдонима, които създавам с помощта на скрипт в моята тестова среда:
CREATE ALIAS IF NOT EXISTS REGEXP_LIKE as $$ boolean regexpLike(String s, String p) { return java.util.regex.Pattern.compile(p).matcher(s).find(); } $$;
CREATE ALIAS IF NOT EXISTS TO_NUMBER as $$ long toNumber(String s) { return Long.valueOf(s); } $$;
CREATE ALIAS if NOT EXISTS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check";
Първите два псевдонима се показват в таблицата INFORMATION_SCHEMA.FUNCTION_ALIASES
, последният (fn_val_check3
) не.
SELECT ALIAS_NAME FROM INFORMATION_SCHEMA.FUNCTION_ALIASES;
Дава ми два реда
ALIAS_NAME
TO_NUMBER
REGEXP_LIKE
Проверих, че H2 има другия псевдоним някъде, като стартирах CREATE ALIAS ...
директно в конзолата и той казва
CREATE ALIAS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check";
Function alias "FN_VAL_CHECK3" already exists; SQL statement: CREATE ALIAS fn_val_check3 for "fakedata.testutil.TestUtil.fn_val_check" [90076-182] 90076/90076 (Help)
Използвам компонент за валидиране, за да проверя дали функцията съществува в базата данни, поради което се чудя. Пропускам ли нещо или това е известно?
fn_val_check3
(класът в classpath ли е и е включен)? - person Thomas Mueller   schedule 10.03.2015select 1 from dual
за моя тестов sql, за да проверя съществуването на функцията и това ми помага. - person MadConan   schedule 11.03.2015CREATE ALIAS IF NOT EXISTS test_2 for "java.lang.Long.parseLong";
- person Thomas Mueller   schedule 13.03.2015