当前位置: 首页 > 知识库问答 >
问题:

创建同名但签名不同的别名

鲜于德泽
2023-03-14

为了在我们的JUnit测试中使用H2数据库而不是调用Oracle,我被阻止在H2上创建别名以模拟一些Oracle兼容性:

>

  • 我首先为日期到字符的转换声明了to_char的别名:可以

    将别名创建为$$java。String toChar(java.util.Date Date,String format)引发异常{…}$$

    然后我尝试为to_char声明一个别名,用于数字到字符的转换:现在h2不接受它:创建别名TO_CHAR$$java.lang.String toChar(java.lang.Number value){...}$$;

    它被拒绝,并显示以下错误消息:

    组织。h2.jdbc。JdbcSQLException:函数别名“TO_CHAR”已存在;SQL语句:将别名创建为_CHAR as$$

    java.lang.String toChar(java.lang.值){返回java.lang.String. value eOf(value);}$$

    我还尝试在1个块中声明2个函数,例如:

    将别名创建为_CHAR as$$

    Java语言lang.String toChar(int值){…}

    Java语言String toChar(java.util.Date Date,String format)引发异常{…}$$;

    在这种情况下,没有错误,但只考虑声明的firest方法。

    那么,有没有办法声明2个同名但签名不同的别名呢?


  • 共有1个答案

    汤飞
    2023-03-14

    至于TO_CHAR,H2现在支持它,因为版本1.3.175 (2013-01-18)。

    H2确实支持函数重载。但是,有一个限制,因为不支持将此类函数声明为源代码。

    您需要如下声明该方法:

    CREATE ALIAS YOUR_METHOD FOR "acme.Function.yourMethod";
    

    此限制在用户定义函数下记录如下:

    如果类已经编译并包含在类路径中,则可以将多个方法绑定到SQL函数。每个Java方法必须有不同数量的参数。将函数声明为源代码时不支持方法重载。

     类似资料:
    • 我想用PHP实现一个XML数字签名。我正在这个验证器上测试签名的正确性。 我得到了错误的签名值,所以我要一步一步地解释我在做什么,请纠正我做错了什么。 我要签名的XML(无新行): 首先,我规范化XML,然后使用sha256对其进行散列,从而生成正确的摘要值。 第二,创建SignedInfo XML元素并规范化它(无新行): 最后,使用RSA-SHA256对SignedInfo元素进行签名。这是产

    • 我一直在努力解决RSA_verify的一个奇怪问题。我正在尝试使用C进行RSA签名,并使用C进行RSA验证。我已经使用OpenSSL命令生成了私钥和证书。 当我使用上面的消息,生成一个散列并使用RSA\u-sign对摘要进行签名时,我得到长度为256的签名(),并且RSA\u-sign返回的长度为256。我使用此长度进行验证,验证成功。 但是当我使用时,签名长度为60,RSA\u-sign返回25

    • 问题内容: 之间有什么区别 相对 从技术角度来看。不知道这是否只是SQL Server特定的。 感谢您的回答。 问题答案: 我更喜欢第一个,因为第二个不是便携式的- 是语法错误(至少在SQLite和Oracle中),或者可能无法满足您的期望(比较两列EmployeeName和empName并将比较结果返回为布尔值/整数),而 是相同的 这是我的首选变体。

    • 问题内容: 如何创建具有不同签名的函数片段?我尝试了下面的代码,但感觉有点黑。我们只是硬着头皮使用切片界面{}吗? 这仅仅是尝试对Golang做太多事情的一种情况吗? 问题答案: 请检查它,我不知道它是否想要什么。因为我不知道你到底想要什么。 在Go Playground 上检查 在这里,我有另一个使用反射调用的示例 在Go Playground 上检查

    • 问题内容: 我在这里已经读到,在Java中,具有相同名称但不同类型的两个变量可以在同一范围内共存。我的意思是这个 但是所有的Java IDE都不允许这样的代码。我想知道这样的代码在语法上是否正确,或者只是IDE不允许这样的代码防止歧义。 无论如何,这是网站的摘录 “如果幸运的话,您也许能够重新编译Jad的输出。 但是,Java VM对于变量命名的规则比Java语言本身更为宽松。例如,一个有效的类文

    • 但所有java IDE都不允许这样的代码。我想知道这样的代码在语法上是否真的正确,或者只是IDE不允许这样的代码来防止歧义。 总之,这里是从网站上摘录的 “如果你幸运的话,你也许可以重新编译JAD的输出。然而,Java VM对变量命名的规则比Java语言本身更宽松。例如,一个有效的类文件可以有几个名为'a'的变量,只要它们有不同的类型。如果你反编译这样的类,你得到的源代码将是无效的。 JAD通常会