我通过Hibernate调用了一个带有OUT参数的存储过程,得到了以下错误:
17:30:52,646 ERROR [STDERR] Caused by: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GET_ACTIVITY_RECORDS'
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GET_ACTIVITY_RECORDS'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我的存储过程:
create or replace
PACKAGE BODY "TEST_NESTEDTAB_PKG" AS
PROCEDURE GET_ACTIVITY_RECORDS( TEMP_RESULT OUT ACT_LOG_TYPE, USERNAME IN ACTIVITY_LOG.USER_NAME%TYPE) AS
BEGIN
SELECT * BULK COLLECT INTO TEMP_RESULT
FROM ACTIVITY_LOG
WHERE USER_NAME = USERNAME;
END GET_ACTIVITY_RECORDS;
END TEST_NESTEDTAB_PKG;
Hibernate映射:
<sql-query name="getactivityLog" callable="true">
<return class="com.test.ps.domain.SPActiveLog">
<return-property name="activityId" column="ACTIVITY_ID" />
<return-property name="username" column="USER_NAME" />
<return-property name="activityDate" column="ACTIVITY_DATE" />
<return-property name="activity" column="ACTIVITY" />
<return-property name="userId" column="USERID" />
<return-property name="action" column="ACTION" />
<return-property name="userRole" column="USER_ROLE" />
<return-property name="description" column="DESCRIPTION" />
<return-property name="category" column="CATEGORY" />
<return-property name="result" column="RESULT" />
</return>
{ call TEST_NESTEDTAB_PKG.GET_ACTIVITY_RECORDS(?,:USERNAME) }
</sql-query>
我按如下方式调用了存储过程:
Query qry = getSession().getNamedQuery("getactivityLog");
qry.setParameter("USERNAME", "FACTORY TOPTAR TOTAIN");
Object result = qry.list();
有人能解释一下这段代码有什么问题吗?
试试这个:
{ ? = call TEST_NESTEDTAB_PKG.GET_ACTIVITY_RECORDS(:USERNAME) }
文档:https://docs.jboss.org/hibernate/stable/core.old/referen/en/html/querysql-namedqueries.html
16.2.2.使用存储过程进行查询
CREATE OR REPLACE FUNCTION selectAllEmployments
RETURN SYS_REFCURSOR
AS
st_cursor SYS_REFCURSOR;
BEGIN
OPEN st_cursor FOR
SELECT EMPLOYEE, EMPLOYER,
STARTDATE, ENDDATE,
REGIONCODE, EID, VALUE, CURRENCY
FROM EMPLOYMENT;
RETURN st_cursor;
END;
<sql-query name="selectAllEmployees_SP" callable="true">
<return alias="emp" class="Employment">
<return-property name="employee" column="EMPLOYEE"/>
<return-property name="employer" column="EMPLOYER"/>
<return-property name="startDate" column="STARTDATE"/>
<return-property name="endDate" column="ENDDATE"/>
<return-property name="regionCode" column="REGIONCODE"/>
<return-property name="id" column="EID"/>
<return-property name="salary">
<return-column name="VALUE"/>
<return-column name="CURRENCY"/>
</return-property>
</return>
{ ? = call selectAllEmployments() }
</sql-query>
问题内容: 我已经使用PDO一段时间了,并且正在重构一个项目,以便它使用存储的proc而不是内联SQL。我收到一个我无法解释的错误。我正在使用PHP版本5.3.5和MySQL版本5.0.7。 我只是想获得一个带有输出的基本存储过程。这是存储的过程: 这是我用来调用proc的代码,$ db是PDO的一个实例: 简单吧?但是,它导致以下错误: 如果我直接这样调用proc: 它按预期工作,这使我相信PH
问题内容: 我在SQL Server 2008 R2中有一个Oracle链接服务器。我需要执行Oracle存储过程(在第一个过程中使用输出参数,在第二个过程中使用输入参数): 我没有找到有关此问题的完整文档,只有带有无参数选择/非选择过程的简单示例,并且想知道如何调用这些过程,具有内部select的过程以及具有基本参数类型的多参数过程。 问题答案: 它应该像这样工作: 如果您有几个参数,则可能如下
问题是,我想用mybatis/ibatis从java调用一个存储过程,这个过程有多个OUT参数,精确的7个,其中2个是Number,另外5个varchar,加上一个Number param 在上下文中有一个很大的限制,它没有模型,只有映射和列表,尽管如果需要,我们可以在调用过程时做一个例外。此外,解决方案必须用java完成,没有使用xml。 我有一个springboot应用程序,有一个rest服务
我刚开始冬眠。我试图通过Hibernate调用oracle存储过程。我可以按照一些步骤通过Hibernate调用过程吗。 提前谢了。
下面是我的Oracle存储过程, 我得到以下异常:hibernate:{CALL REPORT_HIBERNATE(?)}org.hibernate.exception.GenericJDBcException:无法执行查询...并且由:java.sql.sqlException:无效的列索引引起 Plz让我知道在Spring中我将如何使用Hibernate注释调用这个存储过程??
在我的应用程序中,我想执行像SELECT*FROM tbl这样的查询,其中,@list中的col In(@list)可以有变量no of值。我正在使用MS SQL server数据库。当我搜索这个问题时,我找到了这个链接 http://www.sommarskog.se/arrays-in-sql-2008.html 此链接表示使用表值参数。因此,我使用Microsoft SQL Server M