2016-12-28 9 views
0

だから私は問題なくコンパイル手順がありますが、私はそれを実行すると、それが返されます。ORA-00911:無効なキャラクタの問題?

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

削除。即時実行クエリ内 – Milaci

答えて

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; 
関連する問題