为什么我的 Oracle 脚本没有给出任何输出?

问题描述 投票:0回答:1

强文字``大家好,

我刚刚开始使用 Oracle,并尝试为下面的问题陈述编写一个脚本。

问题陈述:我想对两个表Table ATable B执行调节。基于映射表中带有标志 1 的字段。在本例中,我使用动态 SQL 来处理运行时列和连接条件,但我的查询没有给出任何输出。请给我解决方案,或者通过我可以在 Oracle 中执行此动态协调的任何其他方法吗?

----------------------对账查询------------------------ **注意-以下查询运行时没有任何错误,但没有给出任何输出。我不想使用Cursor打印结果,因为我有Million记录。 ** --代码

DECLARE
v_sql VARCHAR2(32767);
v_columns VARCHAR2(32767);
v_join_condition VARCHAR2(32767);
v_column_list SYS.ODCIVARCHAR2LIST;
v_result SYS_REFCURSOR;
BEGIN
SELECT LISTAGG(Column_name, ',') WITHIN GROUP (ORDER BY Column_name)
INTO v_columns
FROM MappIng_table
WHERE Flag = 1;
-- Split the column list into individual column names
v_column_list := SYS.ODCIVARCHAR2LIST();
v_column_list.EXTEND(REGEXP_COUNT(v_columns, ',') + 1);
FOR i IN 1..v_column_list.COUNT LOOP
v_column_list(i) := REGEXP_SUBSTR(v_columns, '[^,]+', 1, i);   
END LOOP;

-- Build the join condition dynamically
v_join_condition := '';
FOR i IN 1..v_column_list.COUNT LOOP
IF i > 1 THEN
v_join_condition := v_join_condition || ' AND ';
END IF;
v_join_condition := v_join_condition || 'a.' || v_column_list(i) ||
'=b.' || v_column_list(i);
END LOOP;
v_sql := 'SELECT * FROM Table_A a full outer JOIN Table_B b ON ' || 
v_join_condition;
dbms_output.put_line(v_sql); 
EXECUTE IMMEDIATE v_sql;
END;
oracle cursor reconciliation
1个回答
0
投票

请发布代码和示例数据。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.