- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经通过这种方式声明了包级类型(使用 Oracle XE 11):
create or replace PACKAGE RM_TYPES
AS
TYPE RECPPART_ARR IS TABLE OF RM_RECEPCIONPARTIDAS%ROWTYPE;
END RM_TYPES;
我有这样的SP:
create or replace PROCEDURE "RM_TRY_B" (partidas OUT RM_TYPES.RECPPART_ARR) as
begin
SELECT * BULK COLLECT INTO partidas FROM rm_recepcionpartidas;
end;
我有这样的java代码:
CallableStatement cstmt = conn.prepareCall("{call RM_TRY_B(?)}");
cstmt.registerOutParameter(1, OracleTypes.ARRAY, "RM_TYPES.RECPPART_ARR");
cstmt.execute();
Array a = cstmt.getArray(1);
它给了我一个异常(exception):
Exception in thread "main" java.sql.SQLException: invalid name pattern: RM_TYPES.RECPPART_ARR
我已经通过向 oracle 发出此命令来授予我的用户访问包的权限:
GRANT EXECUTE ON RM_TYPES TO myuser;
我用这个作为引用:https://docs.oracle.com/database/121/JJDBC/apxref.htm#JJDBC28913 (名为部分:使用 %ROWTYPE 属性为每一行创建 Java 级对象
我哪里做错了?
我也尝试在我的 java 代码中传递这个名称:“RECPPART_ARR”或“MYSCHEMA.RM_TYPES.RECPPART_ARR”它们都不起作用。
然后我在 stackoverflow 上看到有人这样说:java - passing array in oracle stored procedure : “实际上,问题是在包中创建的任何类型对于 java 都是不可见的。如果我在模式级别创建类型,那么它就可以工作。”
这是真的吗?
那么也许我应该在模式级别定义一个别名?
如何?我试过“创建同义词”:
CREATE PUBLIC SYNONYM RECPPART_ARRAY FOR RM_TYPES.RECPPART_ARR;
然后(试图修改我的 SP):
create or replace PROCEDURE "RM_TRY_B" (partidas OUT RECPPART_ARRAY) as
begin
SELECT * BULK COLLECT INTO partidas FROM rm_recepcionpartidas;
end;
但是这次这个 SP 无法编译,在我的 SQLDeveloper 中出现以下错误消息:Error(1,36): PLS-00905: object MYSCHEMA.RECPPART_ARRAY is invalid。
然后我尝试使用我的 sp 的先前定义:
create or replace PROCEDURE "RM_TRY_B" (partidas OUT RM_TYPES.RECPPART_ARR) as
begin
SELECT * BULK COLLECT INTO partidas FROM rm_recepcionpartidas;
end;
并修改了我的 Java 代码以改为使用同义词:
CallableStatement cstmt = conn.prepareCall("{call RM_TRY_B(?)}");
cstmt.registerOutParameter(1, OracleTypes.ARRAY, "RECPPART_ARRAY");
cstmt.execute();
Array a = cstmt.getArray(1);
仍然,异常,消息:构造描述符失败:无法解析类型:“MYSCHEMA.RECPPART_ARRAY”
添加
我刚刚找到的一些其他信息:
有人写道:我遇到了同样的问题。通过创建公共(public)同义词和提供资助设法解决了这个问题。
如你所见,我已经这样做了,但我运气不好。
添加
或者...也许在 oracle 中是这样的(阅读后:http://docs.oracle.com/javadb/10.10.1.2/ref/rrefsqljgrant.html):
create or replace PACKAGE RM_TYPES
AS
TYPE RECPPART_ARR IS TABLE OF RM_RECEPCIONPARTIDAS%ROWTYPE;
END RM_TYPES;
sqlplus (logged in as sys as SYSDBA)> GRANT USAGE ON TYPE RM_TYPES.RECPPART_ARR TO myuser;
CREATE PUBLIC SYNONYM RECPPART_ARRAY FOR RM_TYPES.RECPPART_ARR;
create or replace PROCEDURE "RM_TRY_B" (partidas OUT RM_TYPES.RECPPART_ARR) as
begin
SELECT * BULK COLLECT INTO partidas FROM rm_recepcionpartidas;
end;
....
我试过了......,甚至使用用户“sys”作为 SYSDBA 登录......我在发出授权时遇到错误:
错误从行开始:命令中的 1 -将 RM_TYPES.RECP_ARR 上的使用类型授予我的用户错误报告 -SQL 错误:ORA-00990:权限缺失或无效00990. 00000 - “特权缺失或无效”*原因:
*行动:
我现在没主意了。
最佳答案
JDBC Support for PL/SQL Data Types as Parameters是 Oracle 12c 的新特性。
PL/SQL 类型看起来和行为都像常规类型;它们可以在 SQL 和其他上下文中使用,它们具有 TYPE_OID 和 TYPECODE,并且它们具有数据字典 View (DBA_PLSQL_TYPES)。一个奇怪的区别是 PL/SQL 类型不会出现在 DBA_OBJECTS 中。
在旧版本中,您必须创建一个 TYPE 作为独立对象,以便在 PL/SQL 之外使用它。像这样的代码可以创建对象:
CREATE OR REPLACE TYPE RECPPART_REC IS OBJECT
(
--list RM_RECEPCIONPARTIDAS columns here. %ROWTYPE is not available in SQL.
);
CREATE OR REPLACE RECPPART_ARR IS TABLE OF RECPPART_REC;
关于java - Oracle JDBC/PL SQL/类型/包级别/无效名称模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27560969/
PL/1 中有许多不同的数字数据类型。我想知道什么时候有整数除法,什么地方没有。暂时,我写了一个小例子来说明(至少对我而言)PL/1 非常纠结于其中: DCL BIN15 FIXED BIN(15)
我是 Prolog 的新手。我有两个文件。其中之一是“names.pl”,另一个是“verbs.pl”。这两个文件都有事实。 “names.pl”有关于很多名词等的事实。事实的名字是关系。 这些文件的
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 3 年前。
我正在处理一个存储的 PL/SQL 函数,该函数根据给定的员工编号查找员工的家属姓名。到目前为止,我能够获得所需的输出,但在输出期间似乎有逗号问题。对于如何在输出过程中删除最后一个括号,我们将不胜
我观察到有两种执行 perl 程序的方法: perl test.pl 和 ./test.pl 这两者之间的确切区别是什么,哪一个值得推荐? 最佳答案 我将稍微改写其他答案所说的内容。 第一种情况将运行
我有一个表 TDATAMAP,其中包含大约 1000 万条记录,我想将所有记录提取到 PL/SQL 表类型变量中,将其与某些条件进行匹配,最后将所有必需的记录插入临时表中。请告诉我是否可以使用 PL/
一切都在标题中。 我在游标上循环并想要 EXIT WHEN curs%NOTFOUND 当没有更多行时,PostgreSQL 下的 %NOTFOUND 等同于什么? 编辑 或其他游标属性 %ISOPE
CREATE FUNCTION foo() RETURNS text LANGUAGE plperl AS $$ return 'foo'; $$; CREATE FU
我正在使用 ack.pl 工具来搜索文件中的字符串或 IP ack.pl 的官方网站是 - http://beyondgrep.com/documentation/ ack.pl CLI 示例(想在/
代码 #!/usr/bin/perl -I/root/Lib/ use Data::Dumper; print Dumper \@INC; 以上代码文件名为test.pl,权限为755。 当我使用/u
编写一个 PL/SQL 过程,将员工编号和薪水作为输入参数,并从经理为 'BLAKE' 且薪水在 1000 到 2000 之间的员工表中删除。 我写了下面的代码:- create or replac
我需要对更新行进行一些审核。 所以我有一个函数,它接收 some_table%ROWTYPE 类型的参数,其中包含要为该行保存的新值。 我还需要在历史表中保存一些有关更改的列值的信息。我正在考虑从 a
如果我在 PL/SQL 存储过程中使用许多 CLOB 变量来存储许多长字符串,是否存在性能问题? CLOB 的长度也是可变的吗? CLOB 代替使用 varchar2 和 long 是否有任何已知的限
我想使用 JavaScript/Apex 创建一个按钮,这样当我点击它时,就会“调用”一个 PL-SQL 过程。与常规 html 按钮类似,但 onClick="JavaScript function
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
今天的好时间,想问问有没有人知道在IBM Bluemix 云上安装PostgreSQL 扩展(准确的说是pl/r 和pl/python)的方法是什么?我在那里运行 compose-postgresql
是否可以像普通 Python 函数一样从其他 PL/Python block 调用 PL/Python 函数。 例如,我有一个函数f1: create or replace function f1()
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我正在使用返回 REF CURSOR 的 Java 在 PL/SQL 中调用存储函数: FUNCTION getApprovers RETURN approvers_cursor IS app
通过终端修改Webmin密码时 Can't locate ./acl/md5-lib.pl at /usr/share/webmin/changepass.pl 使用 Ubuntu 20 最佳答案 U
我是一名优秀的程序员,十分优秀!