如何使用记录类型、对象和构造函数在 PLSQL 中给出多个输入值?
Posted
技术标签:
【中文标题】如何使用记录类型、对象和构造函数在 PLSQL 中给出多个输入值?【英文标题】:How can I give multiple input values in PLSQL using record type, object and constructor? 【发布时间】:2017-10-15 10:56:46 【问题描述】:您能帮我编写一个 PLSQL 代码来为单个变量传递“多个输入值”吗?请帮助我如何通过使用记录类型、对象和构造函数来编写匿名 PLSQL 块。
谢谢,
问候, 韦雷什
【问题讨论】:
因为我只有对我的数据库的读取权限,所以我尝试使用像这样的集合来读取输入 声明类型 TEMpRec 是记录(EmployeeID EMPLOYEES.EMPLOYEE_ID%TYPE, LastName EMPLOYEES.LAST_NAME%TYPE);类型 TEmpList 是 TEMpRec 表; vEmpList 临时列表;我尝试在 BEGIN 部分使用 for 循环将它们传递给 vEmpList。 【参考方案1】:这是一种方法:
HR@XE> CREATE OR REPLACE TYPE NUM_ARRAY AS TABLE OF NUMBER;
2 /
Type created.
HR@XE> create or replace procedure demo_sp (
in_array in num_array,
out_sum out number
)
is
BEGIN
out_sum := 0;
for i in 1 ..in_array.count loop
out_sum := out_sum + in_array(i);
END LOOP;
END;
/
Procedure created.
HR@XE> DECLARE
total NUMBER;
nos NUM_ARRAY;
BEGIN
SELECT ROWNUM BULK COLLECT INTO nos FROM dual CONNECT BY ROWNUM<=5;
FOR I IN 1 .. nos.COUNT LOOP
dbms_output.put_line(nos(i));
end loop;
demo_sp(nos,total);
dbms_output.put_line('Total is: '||total);
END;
/
1
2
3
4
5
Total is: 15
PL/SQL procedure successfully completed.
HR@XE>
【讨论】:
以上是关于如何使用记录类型、对象和构造函数在 PLSQL 中给出多个输入值?的主要内容,如果未能解决你的问题,请参考以下文章
oracle plsql中同时记录类型、Collection和Bulk collect
Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器