【发布时间】:2018-07-25 14:00:31
【问题描述】:
尝试使用存储过程将一些数据从 xml 文件(由 pega/java 生成)插入到两个表中。不知道我应该如何定义变量或定义光标,因为那里的大多数教程只向您展示如何编写存储过程,从数据库中的其他表写入表......我被卡住的部分被标记了。一种选择是 JAVA 开发人员使用我的存储过程中提供的参数调用我的存储过程并以这种方式推送数据。如果是这种情况,我如何定义光标从哪里提取数据? (提前致谢!)
Create or Replace Procedure Cascade_Load (
a Number,
b Number,
c Number,
d Varchar2,
e Varchar2,
f Number,
g Varchar2,
h Varchar2,
i Timestamp,
j Number,
k Varchar2,
l Date,
m Number,
n Date,
o Number,
p Date,
q Date
)
AS
BEGIN
IF b is not null
THEN
INSERT INTO Value(Value_Id, Product_Id, Data_Source_Id, Unit_CD, Value_TX, UTC_OFFSET, DATA_DATE, HR_UTC, HR, HR_NUM, DATA_CODE, CREATE_DT, CREATE_USER_ID, MODIFY_DT, MODIFY_USER_ID, EFFECTIVE_DT, INACTIVE_DT)
VALUES(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q);
INSERT INTO XML_Load_STAGING(Code, Product_Name, Product_number, Product_Version, Technical_Contact)
VALUES(a, b, c, d, e);
COMMIT;
END IF;
END;
/
DECLARE
a Number,
b Number,
c Number,
d Varchar2,
e Varchar2,
f Number,
g Varchar2,
h Varchar2,
i Timestamp,
j Number,
k Varchar2,
l Date,
m Number,
n Date,
o Number,
p Date,
q Date
CURSOR cXmlHoursLoadCursor IS (SELECT **WHAT DO I SELECT since Im calling from a xml file rather than from a table?**);
BEGIN
For v in cXmlHoursLoadCursor LOOP
Cascade_Load(v.a, v.b, v.c, v.d, v.e, v.f, v.g, v.h, v.i, v.j, v.k, v.l, v.m, v.n, v.o, v.p, v.q);
COMMIT;
END LOOP;
END;
/
【问题讨论】:
标签: java sql oracle plsql oracle-pro-c