Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 触发器添加分区_Oracle_Plsql - Fatal编程技术网

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字符串中使用。