Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建Oracle SQL Java函数不起作用_Oracle_Java Stored Procedures - Fatal编程技术网

创建Oracle SQL Java函数不起作用

创建Oracle SQL Java函数不起作用,oracle,java-stored-procedures,Oracle,Java Stored Procedures,尝试创建oracle SQL java函数以生成所述的随机UUID时,出现以下错误: sql> CREATE or REPLACE FUNCTION random_uuid RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'java.util.UUID.randomUUID() return java.lang.String' [2019-01-29 09:28:29] [99999][17110] Warning: execution comple

尝试创建oracle SQL java函数以生成所述的随机UUID时,出现以下错误:

sql> CREATE or REPLACE FUNCTION random_uuid
   RETURN VARCHAR2
   AS LANGUAGE JAVA NAME 'java.util.UUID.randomUUID() return java.lang.String'
[2019-01-29 09:28:29] [99999][17110] Warning: execution completed with warning
[2019-01-29 09:28:29] completed in 23 ms
[2019-01-29 09:28:29] 3:78:PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
[2019-01-29 09:28:29] ;
[2019-01-29 09:28:29] The symbol ";" was substituted for "end-of-file" to continue.
即使这只是一个警告,称之为事后无效:

sql> select random_uuid() from dual
[2019-01-29 09:36:28] [65000][6575] ORA-06575: Package or function RANDOM_UUID is in an invalid state
我使用IntelliJ IDEA的数据库控制台来执行脚本。怎么了

编辑:我的原始脚本结尾不包含分号:

create or replace function random_uuid return varchar2 as
  language java
  name 'java.util.UUID.randomUUID() return String';
加上“;”在字符串无效后:

create or replace function random_uuid return varchar2 as
  language java
  name 'java.util.UUID.randomUUID() return String;';

由于问题似乎是IDE无法识别语句终止的位置,因此您可以尝试将其包装在PL/SQL匿名块中,并使用
executeimmediate
强制其正确解析语句:

BEGIN
  EXECUTE IMMEDIATE 'CREATE OR REPLACE FUNCTION RandomUUID RETURN VARCHAR2 AS LANGUAGE JAVA NAME ''java.util.UUID.randomUUID() return java.lang.String'';';
END;
/

那么为什么不添加请求的“;”?可以共享java代码吗?除了脚本中的“java.util.UUID.randomuid()”之外,没有其他java代码。我只是想在IntelliJ IDEA的数据库控制台中执行脚本。这似乎是由解析引起的:数据库控制台将末尾的分号视为语句分隔符,因此语句中缺少分号。dbvis也有同样的问题,但可以在块上标记“-/”和“-”。检查类是否有效
SELECT*FROM dba_对象,其中object_输入('JAVA class'),object_名称='JAVA/util/UUID'IntelliJ IDEA错误报告:“java.util.UUID.randomUUID()返回字符串”在使用dbvis和SQL块分隔符创建函数时工作正常: