首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORACLE : Error(6,3):PL/ SQL :忽略SQL语句,而Error(8,3):PL/SQL: ORA-00933: SQL命令在过程中未正确结束

ORACLE : Error(6,3):PL/ SQL :忽略SQL语句,而Error(8,3):PL/SQL: ORA-00933: SQL命令在过程中未正确结束
EN

Stack Overflow用户
提问于 2020-04-02 12:25:54
回答 2查看 112关注 0票数 0

我想要创建一个过程,但是当我编译这些过程时总是有一个错误,我认为这个过程是对的,什么是错的。这是我的程序:

代码语言:javascript
复制
create or replace PROCEDURE            "DROP_PART_USER" 
AS
H VARCHAR(50); 

BEGIN
    FOR cc IN
    (   
        select PARTITION_NAME INTO H FROM all_tab_partitions 
        WHERE table_name = 'MOB_TRACK_USER' AND partition_name <> 'OLD_DATA_USER' ORDER BY PARTITION_POSITION ASC
        FETCH NEXT 1 ROWS ONLY
    ) LOOP

        --drop partitions older than specified retention preriod
        EXECUTE IMMEDIATE 'ALTER TABLE ' || 'APP_MOBILE_TRACKING' ||'.'||'MOB_TRACK_USER '
             || ' DROP PARTITION ' || cc.partition_name || ' UPDATE GLOBAL INDEXES';       
    END LOOP;

END;

得到一个错误(8,3):PL/ SQL : ORA-00933: SQL命令未正确结束

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-02 12:49:43

你在哪种版本的甲骨文?第一次等在12c出现了。如果您在11上,那么该语法将无法工作,您将得到您声明的错误。您的查询必须是:

代码语言:javascript
复制
select * from (
SELECT PARTITION_NAME
                    FROM all_tab_partitions
                   WHERE     table_name = 'MOB_TRACK_USER'
                         AND partition_name <> 'OLD_DATA_USER'
                ORDER BY PARTITION_POSITION ASC
)
where rownum = 1
票数 1
EN

Stack Overflow用户

发布于 2020-04-02 12:45:46

problems

  • 不要在光标中SELECT INTO
    • 这是您的
    • 的原因

还有几个注意事项:

  • 使用VARCHAR2,而不是VARCHAR
    • ,但这里不使用,因为您不需要变量VARCHAR2

  • 在Oracle

中不使用双引号

应该是

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE drop_part_user
AS
BEGIN
   FOR cc IN (    SELECT PARTITION_NAME
                    FROM all_tab_partitions
                   WHERE     table_name = 'MOB_TRACK_USER'
                         AND partition_name <> 'OLD_DATA_USER'
                ORDER BY PARTITION_POSITION ASC
              FETCH NEXT 1 ROWS ONLY)
   LOOP
      --drop partitions older than specified retention preriod
      EXECUTE IMMEDIATE
            'ALTER TABLE '
         || 'APP_MOBILE_TRACKING'
         || '.'
         || 'MOB_TRACK_USER '
         || ' DROP PARTITION '
         || cc.partition_name
         || ' UPDATE GLOBAL INDEXES';
   END LOOP;
END;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60991539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档