[英]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.