【发布时间】:2021-03-05 14:21:02
【问题描述】:
我正在尝试将程序从 db2 数据库迁移到 oracle 我有 30 多个程序有什么转换工具可以帮助这个过程吗?
例如,我在db2中有这个程序返回DYNAMIC RESULT SETS如何在oracle中重写等效程序
CREATE PROCEDURE GET_Data (
IN P_DATA_1 VARCHAR(4),
IN P_DATA_2 VARCHAR(4) )
SPECIFIC SQL4234234343442343
DYNAMIC RESULT SETS 1
LANGUAGE SQL
NOT DETERMINISTIC
EXTERNAL ACTION
MODIFIES SQL DATA
CALLED ON NULL INPUT
INHERIT SPECIAL REGISTERS
OLD SAVEPOINT LEVEL
P1: BEGIN
-- Declare cursorf
DECLARE RESULT_SET1 CURSOR WITH RETURN TO CLIENT FOR
SELECT DATA_NAME, DATA_VALUE1,DATA_VALUE2
FROM Data
WHERE DATA_VALUE1 = P_DATA_1 AND DATA_VALUE2 = P_DATA_2;
IF EXISTS (SELECT 1 FROM Data WHERE DATA_VALUE1 = P_DATA_1 AND DATA_VALUE2 = P_DATA_2)
THEN
OPEN RESULT_SET1;
ELSE
RETURN;
END IF;
END P1;
此示例转换:
-- SQLINES LICENSE FOR EVALUATION USE ONLY
CREATE OR REPLACE PROCEDURE GET_Data (
P_DATA_1 IN VARCHAR2,
P_DATA_2 IN VARCHAR2 )
IS
BEGIN
OLD
/ SAVEPOINT LEVEL
<<P1>> BEGIN
-- Declare cursorf
IF EXISTS (SELECT 1 FROM Data WHERE DATA_VALUE1 = P_DATA_1 AND DATA_VALUE2 = P_DATA_2)
THEN
OPEN RESULT_SET1 FOR
SELECT DATA_NAME, DATA_VALUE1,DATA_VALUE2
FROM Data
WHERE DATA_VALUE1 = P_DATA_1 AND DATA_VALUE2 = P_DATA_2;
ELSE
RETURN;
END IF;
END P1;
【问题讨论】:
-
您能否发布您的尝试,解释您的代码有什么问题。
-
@Aleksej 我更新了问题,在 db2 中返回类型结果集但这种类型在 oracle 中不存在我想保留返回类型结果集是否可能?
标签: oracle stored-procedures db2