簡體   English   中英

存儲過程輸入作為分區名稱在 oracle 中不起作用

[英]Stored procedure input as partition name not working in oracle

這是我的存儲過程,輸入是要交換的分區名稱。 但是,查詢無法識別我的輸入名稱 ('DATA_EXCHANGE_PAYLOAD_20160630'),但該分區確實存在於數據庫中。

    CREATE
        OR REPLACE PROCEDURE exchange_partitions (partition_name IN VARCHAR2) AS

    BEGIN
        EXECUTE IMMEDIATE 
    '

    ALTER TABLE BUCLM_ADAPTERDB.DATA_EXCHANGE_PAYLOAD EXCHANGE PARTITION partition_name
        WITH TABLE BUCLM_ADAPTERDB.DATA_EXCHANGE_PAYLOAD_TEMP
    ';
    END;

    exec exchange_partitions('DATA_EXCHANGE_PAYLOAD_20160630');

您的partition_name參數未被使用。 alter table語句實際上是在尋找字符串partition_name 這不是你想要的。

要修復它,請使用連接運算符||partition_name的值連接到動態 SQL 中

CREATE OR REPLACE PROCEDURE exchange_partitions (partition_name IN VARCHAR2) AS
BEGIN
    EXECUTE IMMEDIATE 'ALTER TABLE BUCLM_ADAPTERDB.DATA_EXCHANGE_PAYLOAD
                       EXCHANGE PARTITION ' || partition_name || ' WITH
                       TABLE BUCLM_ADAPTERDB.DATA_EXCHANGE_PAYLOAD_TEMP';
END;
EXECUTE IMMEDIATE  'ALTER TABLE BUCLM_ADAPTERDB.DATA_EXCHANGE_PAYLOAD 
                    EXCHANGE PARTITION :1  WITH TABLE 
                    BUCLM_ADAPTERDB.DATA_EXCHANGE_PAYLOAD_TEMP'
                    USING partition_name;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM