我想从表A或表B中读取数据。我的数据库是oracle,过程必须使用最少数量的查询。要求是从一个表中读取数据,如果数据不可用,请转到另一个表。我按照程序写的,
CREATE OR REPLACE PROCEDURE READ(myId IN VARCHAR2, aout OUT SYS_REFCURSOR, bout OUT SYS_REFCURSOR )
IS
temp_acout_type A_TABLE%ROWTYPE;
BEGIN
OPEN aout FOR SELECT * FROM A_TABLE WHERE ID = myId;
FETCH a
我在远程数据库中创建了一个名为getEmployee(id in varchar)的oracle函数,并试图使用数据库链接从本地数据库调用它。
在getEmployee中,我试图返回一个带有employee数据的游标。(表: Employee (ID,Name,address)):
SELECT schema.getEmployee@dblink(id)
FROM DUAL;
如何获得列名(ID、名称、地址)的结果集?
根据Contrad的说法,我这样改变了我的本地功能;
FUNCTION LocalGetEmployee(ID in varchar2)
RETURN Schema.So
我有一个代码存储过程,它将sysrefcursor作为OUT参数返回。
CREATE OR REPLACE PROCEDURE report (rvdate IN VARCHAR2,RESULTSET OUT NOCOPY sys_refcursor)
AS
..
...
.
OPEN RESULTSET FOR (SELECT A.* FROM TEMP_DATA )
...
..
CLOSE RESULTSET
END;
/
从ibatis xml配置中调用此过程
<parameterMap id="inputParam" class="map&
Storeproceduere
CREATE OR REPLACE
PROCEDURE ADDITION
(
A IN NUMBER ,
B IN NUMBER ,
C OUT NUMBER )
AS
BEGIN
C := A+B;
dbms_output.put_line(c);
END ADDITION;
JDBC程序
cstmt = conn.prepareCall("BEGIN addition(?, ?,?); END;");
cstmt.setInt(1, 10);
cstmt.setInt(2, 85);
cstm
我们有一些代码可以针对Oracle根容器cdb$root中的视图打开一个ResultSet。当代码迭代行时,有一个用例需要执行特定的函数调用,但此调用必须在特定的plugable数据库的上下文中进行,在本例中为ORCLDPB1。实际上,代码如下所示:
while (resultSet.next()) {
LOGGER.info("ResultSet Closed (Top Of Loop): {}", resultSet.isClosed());
if (someSpecialUseCaseIsTrue) {
try (Statement s = connect
我们数据库的Oracle版本是10g。
存储过程选择表中的所有元素并返回引用游标类型,如下所示: create或replace
PROCEDURE S_S_TEST(
test_OUT OUT OAS_TYPES.REFCURSOR
)
AS
BEGIN
OPEN test_OUT FOR
SELECT *
FROM table_p;
CLOSE test_OUT;
END S_S_TEST;
在JAVA中执行此存储过程时,会获得以下异常:
java.sql.SQLException: Cursor is closed. at oracle
我在其他帖子中检查过这个问题,它说要指向表格的第一行,我需要执行"result.next()“。但我还是遇到了这个问题,我检查了函数的输入,它没有问题,并且与数据库中的信息相匹配。它不执行"while“循环,就像表的内容是空的一样……我使用的是GWT,所以调试很痛苦!
表格: picId(primary_key),book,fromChapter,toChapter ...(重要的)
内容: book =1,章节= 6。数据库中包含这样的一行。我希望我没有像往常一样错过一些愚蠢的东西!:)
public List<PicAsset> getPicture(int b
我有一个构造如下的PL/SQL查询:
DECLARE
a NUMBER;
B NUMBER;
CURSOR cursor
IS
( SOME SELECT QUERY);
BEGIN
OPEN cursor;
LOOP
SOME STUFF;
END LOOP;
CLOSE cursor;
END
如何使用jdbc从java代码运行此查询并获得结果集?我已经尝试在不使用游标的情况下运行查询,并且运行正常。我想不出用java代码做这件事的方法。如果我直接在oracle客户端上运行查询,它可以正常工作。因此,查询没有任何问题。
附注:我不想将代码存储为存储过程,并
昨天我在我们的生产过程中处理了一个奇怪的错误。语句执行失败
if v_cursor%isopen then
close v_cursor; -- here was an error
end if;
在深入研究之后,我发现这个问题出现在打开游标的子程序中。我通过在子程序中添加输出参数sys_refcursor来修正错误。为了澄清情况,请考虑使用以下测试代码:
procedure nested_test(test number,
p_cur out sys_refcursor)
is
procedure nested_proc
我被困在这里了。我在Oracle中有一个小而愚蠢的函数,并尝试使用Java访问它。返回值应该是一个SYS_REFCURSOR。但是,如果我试图在Java中调用它,就会得到一个错误。
这是Oracle函数:
FUNCTION GET_TBL_AS_CUR
RETURN SYS_REFCURSOR
IS
Tbl SYS_REFCURSOR;
BEGIN
OPEN Tbl FOR SELECT * FROM test_tbl;
RETURN Tbl;
END;
这是Java中的调用:
String stmt = "callStmt: {?= call dbschema.pkg
可以在Django视图中获得游标数据类型的描述吗?
问题是,当我执行原始SQL时,我可以通过调用cursor().description来获取描述,但是当我执行cursor().callfunc('oracleTestFunc',cx_Oracle.CURSOR,)时,
(oracleTestFunc返回游标)无法获取字段说明。因此,问题是如何获得description。我该如何实现它呢?
更新
我的oracle函数是
create or replace package body test_cl is
function ret_proc_run return sys_refc
我有一个Oracle11.2.0存储过程,它返回一些输出参数。查询的结果包含一个引用游标,该引用游标是从复杂子查询填充的。我需要返回子查询中的记录计数作为数字输出参数。我在尝试将计数赋值给子查询内的变量时遇到问题。能否让人知道这在Oracle中是否可行,或者是否有其他方法可以做到这一点。我只需要从存储过程中返回数据和数据记录的计数。我不确定如何分配和返回计数,因为查询结果是从子查询select语句返回的。下面是我要做的一个例子:
p_results OUT sys_refcursor,
p_count OUT NUMBER
OPEN p_result
在我的项目中,我有一个事务处理函数。如果该事务失败,则将所有数据恢复到前一阶段。
考虑一下,在该事务中,我使用sequence的下一个值将值插入到表中。如果事务失败,则需要重置或将序列更改为前一个值。
如果可能的话,给我举个例子。
我测试过了,但我得到了一个错误:
java.sql.SQLException: ORA-08002:序列TEST.CURRVAL尚未在本会话中定义
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processEr
大家好,现在我正在处理这个问题,我有一个Oracle存储过程,这个过程用给定的姓氏查找员工。但是,当我没有发现任何行时,我想要捕获Java中的no数据发现异常。这是程序
FUNCTION GETEMPLOYEE_LASTNAME(LASTNAME IN VARCHAR2) RETURN CUREMPLOYEE_LASTNAME
IS CUR_NAME CUREMPLOYEE_LASTNAME;
BEGIN
OPEN CUR_NAME FOR SELECT * FROM EMPLOYEE WHERE LAST_NAME = LASTNAME;
RETURN (CUR_NAME);
EXCEPTI
我正在尝试使用JdbcTemplate从oracle匿名块读取一个值。以下是我的java代码:
getJdbcTemplate().queryForObject(sql, Boolean.class);
下面是sql:
DECLARE
CRS SYS_REFCURSOR;
BEGIN
OPEN CRS FOR SELECT CASE
WHEN
1 > 0
我们使用SpringOracle来调用SimpleJdbcCall中返回游标的存储过程。看起来SimpleJdbcCall没有关闭游标,过了一段时间就超过了最大打开游标的上限。
ORA-01000: maximum open cursors exceeded ; nested exception is java.sql.SQLException: ORA-01000: maximum open cursors exceeded spring
论坛上还有其他一些人也经历过这种情况,但似乎没有答案。看起来我是spring/oracle支持中的一个bug。
这个bug很严重,可能会影响我们未来对S