从Oracle创建h2函数
我在oracle中有以下功能,我必须将其转换为h2。任何人都可以帮助我。我不知道这样做:从Oracle创建h2函数
create or replace function unpack_info (p_trackchar table.ordchar%type)
return varchar2 is
l_res varchar2(8);
begin
select decode(bitand(to_number(ascii(p_trackchar)),1),1,'1','0') ||
decode(bitand(to_number(ascii(p_trackchar)),2),2,'1','0') ||
decode(bitand(to_number(ascii(p_trackchar)),4),4,'1','0') ||
decode(bitand(to_number(ascii(p_trackchar)),8),8,'1','0') ||
decode(bitand(to_number(ascii(p_trackchar)),16),16,'1','0') ||
decode(bitand(to_number(ascii(p_trackchar)),32),32,'1','0') ||
decode(bitand(to_number(ascii(p_trackchar)),64),64,'1','0') into l_res
from dual;
return l_res;
end;
我试图先做一些基础知识,但这一功能的创建将不起作用:
CREATE ALIAS HTS.TEST AS $$
String nextPrime(String value){
return null;
}
$$;
我得到这个错误:
Error: Syntax Fehler in SQL Befehl "CREATE ALIAS HTS.TEST AS []$$ String nextPrime(String value){ return null" Syntax error in SQL statement "CREATE ALIAS HTS.TEST AS []$$ String nextPrime(String value){ return null" [42000-162]
这是做翻译的正确方法还是我该怎么办?
我已经创建了一个别名(测试者)并且可以执行它。现在,O必须创建解压缩的别名:info。有人可以帮助我的语法等因素如何函数看起来像h2中的别名?
我无法重现该问题。你是如何运行这个声明的?可能你使用只发送部分查询的工具运行语句?或者可能在'$$'之前有一个'特殊字符'(某种类型的unicode空间)?我试过这个:
create schema hts;
CREATE ALIAS HTS.TEST AS $$
String nextPrime(String value){
return null;
}
$$;
你可以试试H2控制台吗?
这应该工作,但语法错误表明您的H2版本不支持这一点。你使用的是最新版本吗?
如果没有,这是一个错误。归档它。
作为一种变通方法,编写函数在Java中,它编译成一个JAR,将JAR添加到类路径,并与CREATE ALIAS HTS.TEST FOR "...package.Type...";
使用它,请参阅http://www.h2database.com/html/features.html#user_defined_functions的一个例子。
jeah我正在使用版本1.3.162网站上的最新版本。我不会在你的帖子的最后部分展示你的意思。我应该简单地使用该函数创建一个类,然后将其添加到类路径中? – bladepit 2011-12-14 09:36:51
是的。有关示例,请参见http://www.h2database.com/html/features.html#user_defined_functions。 – 2011-12-14 10:37:40
使用'作为转义序列而不是$$。如果您想使用转义序列,请使用$$。所以代码将如下所示:
CREATE ALIAS HTS.TEST AS '
public static String nextPrime(String value){
return null;
}
';
+1奇怪的是,错误信息不包含最后一个`}`+`$$`。 – 2011-12-14 10:38:46