- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有一个存储过程ONE
create or replace PROCEDURE ONE
(
A in number
B in number
...
ZZ out SYS_REFCURSOR
) IS
SOME_OTHER_STUFF
BEGIN
...
END
这会返回一个 sys_refcursor 以及我需要的一些数据。然后我有一个存储过程两个
create or replace PROCEDURE TWO
(
A in number
B in number
...
ZZ out SYS_REFCURSOR
) IS
Count_Records Sys_Refcursor;
l_rec Count_Records%rowtype;
BEGIN
/* get some data from the ONE stored procedure to use on this procedure*/
ONE(A,B,...Count_Records)
Loop
fetch count_records into l_rec;
Exit When count_records%Notfound;
If l_rec.TT_RAW > MAX_RECORDS Then
Raise To_Many_Results;
End If;
End Loop;
END
当我尝试声明行类型时出现错误 l_rec Count_Records%rowtype;
如何声明这个变量?问题是 TT_RAW
是我试图获取的列,它是一个 SUM,并且游标未映射到任何包含大量计算的表。
谢谢
最佳答案
sys_refcursor
的全部意义在于它是动态定义的。另一方面,rowtype
声明必须是静态的(如果不是,编译器无法判断从中引用的字段是否有效)。这是一个用例的定义,您应该定义自己的强类型引用游标,而不是使用 sys_refcursor
。
下面是一个非常简单的例子:
CREATE OR REPLACE PACKAGE BODY rc_example IS
PROCEDURE two (a IN NUMBER, b IN NUMBER);
END rc_example;
/
CREATE OR REPLACE PACKAGE BODY rc_example IS
TYPE one_record IS RECORD (FIRST_VALUE VARCHAR2 (10));
TYPE one_cursor IS REF CURSOR
RETURN one_record;
--Could alternately be declared using a table's rowtype:
--TYPE one_cursor is ref cursor return some_table%rowtype;
PROCEDURE one (a IN NUMBER, b IN NUMBER, zz OUT one_cursor) IS
BEGIN
OPEN zz FOR SELECT 'test' FROM DUAL;
END one;
PROCEDURE two (a IN NUMBER, b IN NUMBER) IS
count_records SYS_REFCURSOR;
l_rec count_records%ROWTYPE;
BEGIN
one (a, b, count_records);
LOOP
FETCH count_records INTO l_rec;
DBMS_OUTPUT.put_line (l_rec.FIRST_VALUE);
EXIT WHEN count_records%NOTFOUND;
END LOOP;
END two;
END rc_example;
/
关于sql - 在存储过程中声明 SYS_REFCURSOR 和 ROWTYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23762522/
如何获取使用 %ROWTYPE 参数的 PLSQL 过程的真实签名? 例如 : clear screen; prompt > Table creation to support %ROWTYPE cr
我是 PL/SQL 的新手,并尝试创建一个引用表行的对象: CREATE OR REPLACE TYPE my_object AS OBJECT( table_row my_table%ROWTY
我在 PostgreSQL 9.2.9 中有一个 plpgsql 函数需要返回多个列。大多数列都来自一个表,所以我声明了虚拟表(这个术语正确吗?)rc 为: rc "Sequence"%rowtype
我需要一个模式级类型(从 C++ 代码引用它),它总是与表的 %rowtype 记录相同(相同的字段)。遗憾的是,我不能直接从代码中使用 %rowtype,只能使用声明为 的命名类型 create t
下面的 W.r.t 代码我不能将 fetch-into-variable 的类型声明为基础表的 %ROWTYPE,因为 SYS_REFCURSOR 位于连接两个表的选择上,并且还选择了一些在基础两个表
所以我有一个存储过程ONE create or replace PROCEDURE ONE ( A in number B in number ... ZZ out SYS_R
我有一个 Oracle 12c 数据库,其中有一个包含标识列的表: CREATE TABLE foo ( id NUMBER GENERATED ALWAYS AS IDENTITY PRI
我有一个变量定义如下: declare TYPE tnr_l IS VARRAY(30) of lve%ROWTYPE; 我希望通过从数据库中获取数据来初始化此变量: select * int
我在函数内部声明如下: SEL_USER APP.USER % ROWTYPE; 然后我做了选择 完美运行: SELECT * INTO SEL_USER FROM APP.USER WHE
将数据从 csv 加载到现有 Postgres 表后,我将有需要合并的重复记录。为此,我计划使用执行以下操作的存储过程: current_record airports%ROWTPE; n
我目前正在用 plpgsql 语言编写一个函数来创建分区,该分区将保存每个月的传感器数据(一个分区用于一个月和一个传感器)。我被这个错误困住了: ERROR: missing FROM-clause
我有一个 PostgreSQL 函数,如下所示: CREATE FUNCTION myFunc() returns myTable as $$ DECLARE my_row myTable%ROWTY
创建具有一种行类型的简单 TableView 相当容易。你只要设置 tableView.setNumberOfRows(yourArray.count, withRowType: "yourowtyp
我有一个看起来像的存储过程: PROCEDURE get_curx( p_buf IN ni_imsi%ROWTYPE, p_bufx
如果我有一个函数,它只返回包含表中某些列的一行。我需要在函数返回声明中添加%rowtype吗? CREATE OR REPLACE FUNCTION test(int n) RETURNS table
TYPE ref_cur IS REF CURSOR; ref_cur_name ref_cur; TYPE tmptbl IS TABLE OF ref_cur_name%ROWTYPE
我现在没有权限来测试这个,但是下面是——或者类似的东西,因为我的即兴代码可能并不完美! -- 在 Oracle 中可能: declare myRecord myTable%ROWTYPE; beg
我正在尝试在 postgres 中创建一个函数,该函数从一个表中检索数据并将其输入到另一个表中。我正在使用 %ROWTYPE 类型来存储来自 select 语句的临时数据,然后使用插入语句遍历它,但没
所需的设置 为了提高某些代码的优雅,我想知道是否/可以做与%ROWTYPE variable from table name相反的事情— 从 %ROWTYPE 或 RECORD 中提取表名(最相关的是
我正在 Postgres 中开发一个函数,旨在为查询的每条记录恢复一组函数中包含的检查结果的值。这些函数中只有一个会返回正确的值。这些函数有一个公共(public)前缀“fn_condicao_”,并
我是一名优秀的程序员,十分优秀!