我正在尝试编写一个过程,该过程将使用数据库中的某些数据填充CLOB对象。
我有一个存储在表中的SQL select查询。我正在获取该查询并在过程中执行它以获取一列数据(供应商ID)。 我将查询存储在DB中的原因是因为它经常更改,但它将提供与其结果相同的列。 现在我试图将这些数据放在CLOB对象中,这就是我被困住的地方。 我无法从CLOB对象中的v_report_type获取供应商ID。
有人可以指导我编写正确的代码。
以下是我在程序中写的内容。
DECLARE
TYPE report_type IS TABLE OF supplier.supplier_id%TYPE
v_report_type report_type;
v_query1 varchar(4000);
v_report_clob CLOB;
BEGIN
v_report_clob:= null;
select query1 into v_query1 from report_query where report_id = 20;
EXECUTE IMMEDIATE v_query1 BULK COLLECT INTO v_report_type;
v_report_clob := v_report_clob||v_report_type;
//Unrelated code here
END;
此致 Nirmalya
答案 0 :(得分:1)
我在您的代码中看到的主要问题是您正在尝试将CLOB与集合数据类型连接起来。您可以尝试通过以下方式替换连接行:
v_report_clob := v_report_clob || v_report_type(1); --always take only first value
或
FOR i IN 1..v_report_type.COUNT LOOP
v_report_clob := v_report_clob || v_report_type(i); --concatenate all values into single CLOB, here you can add also e.g. extra spaces between values
END LOOP;