【发布时间】:2019-02-05 22:11:36
【问题描述】:
下面的插入语句包含另一个具有 3 列(id、ins_dt、text_stuff)的表的详细信息
INSERT INTO swpurge_config
(schema
,table_name
,table_alias
,driving_column
,deletion_predicate
,retention_period_type
,retention_period_value)
VALUES
('CUSTOMERS_OWNER'
,'LAST_NAMES'
,'LN'
,'ins_dt'
,'WHERE ln.ins_dt < SYSDATE - p_retention_period_value
AND ora_hash(ln.rowid, 8) = 1'
,'month'
,'6');
目标: 我实际上是在尝试在 varchar2 列中添加删除谓词。我们的想法是在过程中调用此列,该过程将删除最多 1000 行的记录:
PROCEDURE delete_rows
(
p_schema IN VARCHAR2
,p_table_name IN VARCHAR2
,p_table_alias in varchar2
,p_retention_period_value IN VARCHAR2
,p_delete_predicate IN VARCHAR2
) IS
v_sql varchar2 (32000);
v_row_limit pls_integer (1000);
BEGIN
v_sql := 'delete from ' || p_schema ||'.'|| table_name ||p_table_alias
'older than '|| p_retention_period_value || p_delete_predicate;
dbms_output.put_line(v_sql);
END delete_rows;
不确定两件事: 1.如何将sql where子句存储在表列中? 2. 如何在过程中将where子句作为语句执行?
谢谢
【问题讨论】: