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修改此函数。请建议。