所以我有没有问题编译的程序,但是当我运行它时会返回:
Error report -
ORA-00911: invalid character
ORA-06512: at "MYDATABASE.MY_PROCEDURE", line 4
ORA-06512: at line 2
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than
letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain
any character other than a doublequote. Alternative quotes
(q'#...#') cannot use spaces, tabs, or carriage returns as
delimiters. For all other contexts, consult the SQL Language
Reference Manual.
*Action:
此处的程序
CREATE OR REPLACE PROCEDURE MY_PROCEDURE
IS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE CHILD_TABLE ADD CONSTRAINT FK_CHILD_TABLE_PARENT_TABLE FOREIGN KEY (PARENT_TABLE_ID) REFERENCES PARENT_TABLE(ID) ON DELETE CASCADE;';
END;
以下是我如何称呼它:)
BEGIN
MY_PROCEDURE;
END;
我可以提一下
没有错ALTER TABLE CHILD_TABLE ADD CONSTRAINT FK_CHILD_TABLE_PARENT_TABLE FOREIGN KEY (PARENT_TABLE_ID) REFERENCES PARENT_TABLE(ID) ON DELETE CASCADE;
因为它在程序体之外运行没有问题:)
答案 0 :(得分:2)
在;
中删除查询中的EXECUTE IMMEDIATE
:
CREATE OR REPLACE PROCEDURE MY_PROCEDURE
IS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE CHILD_TABLE ADD CONSTRAINT FK_CHILD_TABLE_PARENT_TABLE FOREIGN KEY (PARENT_TABLE_ID) REFERENCES PARENT_TABLE(ID) ON DELETE CASCADE';
END;