【发布时间】:2021-11-09 14:40:42
【问题描述】:
在 oracle 中,我想要 totalCount 和 rows,我做了以下操作:
create or replace PACKAGE BODY PA_MYPACKAGE
IS
PROCEDURE sp_myProcedure(p_nam IN Varchar2
, p_totalCount OUT NUMBER
, p_recordset OUT SYS_REFCURSOR)
AS
BEGIN
SELECT COUNT(*) INTO p_totalCount FROM myTABLE WHERE name = p_name;
OPEN p_recordset FOR
SELECT
myTABLE.id
, myTABLE.name
, myTable.Description FROM myTABLE
WHERE name = p_name
OFFSET 0 ROW
FETCH NEXT 10 ROW ONLY;
END;
如果有多个条件,这就不好了。我试过了
create or replace PACKAGE BODY PA_MYPACKAGE
IS
PROCEDURE sp_myProcedure(p_nam IN Varchar2
, p_totalCount OUT NUMBER
, p_recordset OUT SYS_REFCURSOR)
AS
BEGIN
OPEN p_recordset FOR
SELECT
myTABLE.id
, myTABLE.name
, myTable.Description FROM myTABLE
, count(*) over() as totalCount
WHERE name = p_name;
END;
但我不能设置 P_totalCount = totalCount;
我怎样才能得到它们?
【问题讨论】:
-
我不确定您想要实现什么。你能详细说明一下吗?
-
第一个代码有效,所以 - 你为什么不使用它?有“多条件”就不好是什么意思? 哪个多个条件?
-
@Littlefoot 假设要传递的参数包括 p_name, p_code,p_ createdAt... 那么 WHERE name = p_name 和 code = p_code, p_createaAt,... 并且它们是重复的,另外,如果表有很多数据,不得不去where两次也会影响速度
-
@LajosArpad 我正在寻找获取总行数并获得分页的最佳方法
标签: c# oracle asp.net-web-api oracle12c dapper