Java 无法使用此类数据类型创建Oracle函数

Java 无法使用此类数据类型创建Oracle函数,java,oracle,oracle11g,Java,Oracle,Oracle11g,请帮助我,如何创建具有以下数据类型的函数 create or replace FUNCTION "SUSPENDTIME" ( keydate in types.char10, keytime in types.char8) 找不到作为数据类型获取的错误 我尝试在下面创建类型,但不起作用 创建或替换类型作为对象 (char10 char(10)、char8 char(8)、char6 char(6), char1 char(1),char2 char(2)

请帮助我,如何创建具有以下数据类型的函数

create or replace FUNCTION              "SUSPENDTIME" 
( 
 keydate in types.char10, 
 keytime in types.char8) 
找不到作为数据类型获取的错误

我尝试在下面创建类型,但不起作用

创建或替换类型作为对象 (char10 char(10)、char8 char(8)、char6 char(6), char1 char(1),char2 char(2),char21 char(21) );


行/列:1/42 PLS-00201:标识符“TYPES.CHAR10”必须声明为

create or replace function suspendtime (keydate in varchar2,
                                        keytime in varchar2)
但是,它甚至可能是一个参数:

create or replace function suspendtime (keydatetime in date)

[编辑:在看到您的评论后]

它看起来像一个用户定义的类型集合。大概是这样的:

名称为
类型的包
,其中包含某些子类型:

SQL> create or replace package types as
  2    subtype char10 is varchar2(10);
  3    subtype num81  is number(8, 1);
  4  end types;
  5  /

Package created.
使用这些类型的函数:

SQL> create or replace function f_test (par_ename in types.char10)
  2    return types.num81
  3  is
  4    retval number;
  5  begin
  6    select sal into retval
  7      from emp
  8      where ename = par_ename;
  9    return retval;
 10  end;
 11  /

Function created.
它有用吗

SQL> select f_test('KING') from dual;

F_TEST('KING')
--------------
          5000

SQL>
是的



因此,如果您想使用
types.char10
和类似的工具,您必须首先创建它们。如果没有,则不能期望编译
SUSPENDTIME
函数。

只想知道您是否为列使用了正确的数据类型?我可以从名称中看出它可以是日期数据类型。 但无论如何,下面是语法:

create or replace function 
SUSPENDTIME
 (keydate in varchar2,
  keytime in varchar2)
End SUSPENDTIME;

什么是
types.char10
?这个存储过程是从JDBC运行的。请看下面url中的存储过程也很完美,我正在尝试这种解决方案。神奇的东西。它只是预期的数据类型。仅供参考,请查找类似的存储过程,因为日期和时间分别附加到keydate和keytime字段,所以它应该是日期数据类型…但您可以创建varchar2数据类型抱歉,我不应该传递数据类型。此功能已在生产中运行。我想,通过JDBC。现在需要通过pl sql developer修改此函数。请建议。