Oracle 触发器添加分区
要执行的错误、错误日期、要使用的格式Oracle 触发器添加分区,oracle,plsql,Oracle,Plsql,要执行的错误、错误日期、要使用的格式 CREATE OR REPLACE PROCEDURE prc_partitionFN (data IN DATE, name IN VARCHAR2) AS a VARCHAR2(400); d DATE; BEGIN SELECT TO_DATE(data , 'YYYY/MM')INTO d FROM dual; a := 'ALTER TABLE fornitore_negozio ADD PARTITION name
CREATE OR REPLACE PROCEDURE prc_partitionFN (data IN DATE, name IN VARCHAR2)
AS
a VARCHAR2(400);
d DATE;
BEGIN
SELECT TO_DATE(data , 'YYYY/MM')INTO d
FROM dual;
a := 'ALTER TABLE fornitore_negozio ADD PARTITION name VALUES LESS THAN (d)';
EXECUTE IMMEDIATE a;
dbms_output.put_line('Partizione creata correttamente');
END prc_partitionFN;
为什么要将日期再次转换为日期 我认为你需要以下几点:
CREATE OR REPLACE PROCEDURE PRC_PARTITIONFN (
DATA IN DATE,
NAME IN VARCHAR2
) AS
A VARCHAR2(400);
BEGIN
A := 'ALTER TABLE fornitore_negozio ADD PARTITION name VALUES LESS THAN (TO_DATE('''
|| TO_CHAR(DATA, 'YYYY/MM')
|| ',''YYYY/MM'')';
EXECUTE IMMEDIATE A;
DBMS_OUTPUT.PUT_LINE('Partizione creata correttamente');
END PRC_PARTITIONFN;
数据
它不是一个可以从双栏中选择的列。您要检索哪种类型的日期?变量data
是date
-切勿对已经是date
的值调用to\u date()
。分区键的数据类型是什么?希望它是一个日期
(或时间戳
)数据类型,然后您可以使用它。间隔分区表自动创建新分区,您不必关心它。该过程不起作用,变量D
未声明。你会问(完全正确)“为什么你要把日期再次转换为日期?”——但你的回答与此类似<代码>选择。。。从dual使用无用,只需编写D:=代码>@WernfriedDomscheit实际上我忘了删除选择。。。从双
。根本不需要。我应该如何执行日期?见更新的答案。您正在使用动态查询,因此日期将转换为字符。您需要使用更新的答案中显示的to_date
将其转换为日期!!变量name
未在动态sql字符串中使用。