begin get_dev_cs; end; 运行后没有数据插入制定表 get_dev_cs 代码如下CREATE OR REPLACE PROCEDURE get_dev_cs IS sql_tem VARCHAR2(4000); v_dt NUMBER; BEGIN sql_tem := 'truncate table ycyd.Subscriber_cs'; EXECUTE IMMEDIATE sql_tem; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.Subscriber_cs SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num FROM jour1.om_subscriber_' || v_dt.db || ' a WHERE a.action = 0'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; END;
时间: 2024-02-14 13:28:54 浏览: 86
根据你提供的代码,我看到了可能导致没有数据插入指定表的问题。在存储过程 `get_dev_cs` 中,你在循环之前执行了 `truncate table ycyd.Subscriber_cs` 的操作,这会清空表中的所有数据。因此,在循环中执行插入操作时,可能没有符合条件的数据可供插入。
如果你希望每次循环前清空表中的数据,你可以将 `truncate` 操作移到循环之外。以下是修改后的代码:
```sql
CREATE OR REPLACE PROCEDURE get_dev_cs IS
sql_tem VARCHAR2(4000);
v_dt NUMBER;
BEGIN
sql_tem := 'truncate table ycyd.Subscriber_cs';
EXECUTE IMMEDIATE sql_tem;
FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db
FROM sys.all_tables a
WHERE a.owner = upper('jour1')
AND a.table_name LIKE upper('om_subscriber_202___')
AND substr(table_name, '15') > 202205) LOOP
-- 循环往表里添加数据
sql_tem := '
INSERT INTO ycyd.Subscriber_cs
SELECT a.order_id,
a.done_date,
a.cust_id,
a.subscriber_ins_id,
a.access_num
FROM jour1.om_subscriber_' || v_dt.db || ' a
WHERE a.action = 0';
-- 执行SQL语句
EXECUTE IMMEDIATE sql_tem;
END LOOP;
END;
```
在修改后的代码中,我们将 `truncate` 操作移到循环之外,这样在每次循环之前都会清空表中的数据。这样,每次循环都可以插入符合条件的数据到表中。
请注意,代码中还有其他可能需要根据实际情况进行调整的部分,比如表名、列名、条件等。在执行这段代码之前,请确保你已经根据实际情况进行了适当的修改。
阅读全文