【问题标题】:DB sql Altibase 'as language java name' useDB sql Altibase '作为语言 java 名称' 使用
【发布时间】:2021-01-13 06:08:02
【问题描述】:

我的源代码

REATE OR REPLACE FUNCTION func1 RETURN VARCHAR2
AS LANGUAGE JAVE NAME 'test.quote() return
java.lang.String';

当我在 oracle sql 上使用此代码时 但我现在想使用Alitibase DBS 这个sql打印错误

[ERR-31001 : SQL syntax error line 2: parse error AS LANGUAGE JAVE NAME'test.quote() return java.lang.String'

我需要你的帮助

【问题讨论】:

    标签: sql database oracle


    【解决方案1】:

    您正在使用 PostgreSQL 语法创建一个函数。 Oracle PL/SQL 中不存在AS LANGUAGE JAVE NAME 语法。

    【讨论】:

    • Oracle 可以将 Java 用于存储过程和函数,请参阅我的答案以获取示例。尽管如果未安装可选的 Java 组件,该功能可能无法在您的系统上运行。
    【解决方案2】:

    Altibase 似乎不支持 Java 函数,因此您必须将 Java 功能重写为 Altibase 存储过程。

    (我对此不是 100% 确定,但是“存储过程用户手册”文档在相关语法图附近的任何地方都没有包含关键字“Java”。由于 Altibase 文档与 Oracle 文档非常相似,我希望 Java 语法在同一个地方,如果它存在的话。)

    顺便说一句,您的 Oracle 示例并不完全正确。下面是一个使用 Java 的 Oracle 存储过程的完整工作示例。

    SQL> create or replace and compile
      2  java source named "test"
      3  as
      4  public class test
      5  {
      6    public static String quote()
      7    {
      8    return "Hello World";
      9    }
     10  }
     11  /
    
    Java created.
    
    SQL> CREATE OR REPLACE FUNCTION func1 RETURN VARCHAR2
      2  AS LANGUAGE JAVA NAME 'test.quote() return
      3  java.lang.String';
      4  /
    
    Function created.
    
    SQL> select func1 from dual;
    
    FUNC1
    --------------------------------------------------------------------------------
    Hello World
    

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 2011-09-08
      • 2015-07-14
      相关资源
      最近更新 更多