CREATE TABLE INSIDE PROCEDURE

别来无恙 提交于 2019-12-13 02:55:47

问题


I can't seem to create the table inside this procedure. I read it online that for any DDL, I need to use EXECUTE IMMEDIATE and tried following few examples online. However, even after trying several solutions it keeps failing. '

Error ""ORA-00904: "End": invalid identifier ORA-06512: at "EXTRACT_AUTOMATED_CHECKS", line 89 "

CREATE OR REPLACE PROCEDURE EXTRACT_AUTOMATED_CHECKS AS 


BEGIN

--DROP TABLE
   BEGIN 
   EXECUTE IMMEDIATE ('DROP TABLE extract_checks') ;    
   EXCEPTION 
   WHEN OTHERS THEN NULL;
   END;

--CREATE TABLE, INDEX
--TABLE
   BEGIN
   EXECUTE IMMEDIATE 'CREATE TABLE extract_checks
                    (
                     Card number(19) NOT NULL PRIMARY KEY
                     ,Customer_Id number(19)
                    )';
    COMMIT;
    END;

--INDEX
    BEGIN
    EXECUTE IMMEDIATE('CREATE INDEX IDX_EXT_CHECKS extract_checks(Customer_Id)');
    COMMIT;
    END;

SOURCE.DBA_SEND_MAIL(
V_FROM=>'Notification@Company.com;',
V_RECIPIENT  => 'employee@company.com',
V_SUBJECT => 'Automated Checks Completed',
V_MESSAGE  =>  'Automated Checks Completed' );

EXCEPTION WHEN OTHERS THEN

SOURCE.DBA_SEND_MAIL(
V_FROM=>'Notification@Company.com;',
V_RECIPIENT  => 'employee@company.com',
V_SUBJECT => 'Automated  Checks Failed',
V_MESSAGE  =>  'Automated  Checks Failed' );

RAISE;

END EXTRACT_AUTOMATED_CHECKS;

回答1:


There is no issue with CREATE TABLE.

you missed ; at the end of last call to send mail in exception block.

SOURCE.DBA_SEND_MAIL(
V_FROM=>'Notification@Company.com;',
V_RECIPIENT  => 'employee@company.com',
V_SUBJECT => 'Automated PX Checks Failed',
V_MESSAGE  =>  'Automated PX Checks Failed' ); <<-- this ; is missing

Cheers!!



来源:https://stackoverflow.com/questions/57470650/create-table-inside-procedure

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!