나는 오전 내가 두꺼비의 메시지를 볼 때 PL/SQL 기능PL/SQL 오라클 ORA-24344
Warning: compiled but with compilation errors
No errors.
를 만들 때 다음, 나는 다음을 참조하십시오
[Warning] ORA-24344: success with compilation error
17/43 PL/SQL: ORA-00904: "PAGE_DCPN": invalid identifier
2/48 PLS-00201: identifier 'B2BOWNER.SSC_PAGE_MAP' must be declared
16/5 PL/SQL: SQL Statement ignored
PL/SQL: Compilation unit analysis terminated
(2: 0): Warning: compiled but with compilation errors
를 수신하고 테이블을 만들려면 다음 PL/SQL 명령을 사용하여
DECLARE
v_create LONG;
v_drop LONG;
TABLE_DOES_NOT_EXIST exception;
PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942); -- ORA-00942
TABLE_NAME VARCHAR2(30) := 'B2BOWNER.SSC_Page_Map';
BEGIN
BEGIN
v_drop := 'DROP TABLE ' || TABLE_NAME;
EXECUTE IMMEDIATE v_drop;
EXCEPTION
WHEN TABLE_DOES_NOT_EXIST THEN NULL;
END;
v_create := 'CREATE TABLE ' || TABLE_NAME || ' (
PAGE_ID_NBR NUMERIC(10) NOT NULL Check(Page_ID_NBR > 0),
PAGE_TYPE VARCHAR2(50) NOT NULL,
PAGE_DCPN VARCHAR2(100) NOT NULL,
PRIMARY KEY(Page_ID_NBR, Page_Type))';
EXECUTE IMMEDIATE v_create;
COMMIT WORK;
COMMIT COMMENT 'Create Table';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -955 THEN
NULL; -- suppresses ORA-00955 exception
ELSE
RAISE;
END IF;
END;
내가 만들려고 오전 PL/SQL 기능은
0 스크립트를 생성CREATE OR REPLACE FUNCTION B2BOWNER.F_SSC_Page_Map_Insert(
p_page_id IN B2BOWNER.SSC_Page_Map.PAGE_ID_NBR%TYPE,
p_page_type IN B2BOWNER.SSC_Page_Map.PAGE_TYPE%TYPE,
p_page_dcpn IN B2BOWNER.SSC_Page_Map.PAGE_DCPN%TYPE)
RETURN INTEGER
IS
TABLE_DOES_NOT_EXIST exception;
PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942); -- ORA-00942
BEGIN
MERGE INTO B2BOWNER.SSC_PAGE_MAP
USING (SELECT PAGE_ID_NBR ,PAGE_TYPE ,PAGE_DCPN FROM dual)
ON (PAGE_ID_NBR = p_page_id AND PAGE_TYPE = p_page_type AND PAGE_DCPN = p_page_dcpn)
WHEN MATCHED THEN
UPDATE SET PAGE_ID_NBR = p_page_id, PAGE_TYPE = p_page_type, PAGE_DCPN = p_page_dcpn
WHEN NOT MATCHED THEN
INSERT (PAGR_ID_NBR, PAGE_TYPE, PAGE_DCPN)
VALUES(p_page_id, p_page_type, p_page_dcpn);
RETURN 0;
EXCEPTION
WHEN TABLE_DOES_NOT_EXIST THEN
RETURN -1;
WHEN DUP_VAL_ON_INDEX THEN
RETURN -2;
WHEN INVALID_NUMBER THEN
RETURN -3;
WHEN OTHERS THEN
RETURN -4;
END F_SSC_Page_Map_Insert;
SHOW ERRORS PROCEDURE B2BOWNER.F_SSC_Page_Map_Insert;
GRANT EXECUTE ON F_SSC_Page_Map_Insert TO B2B_USER_DBROLE;
PL/SQL은 일반적인
PL/SQL procedure successfully completed.
과 성공을 실행하고 기존과 같은 스키마 B2BOWNER.SSC_PAGE_MAP
에서 두꺼비에 확인하고 모두가 좋아 보인다.
here과 같은 절차를 사용하는 것이 처음이므로 절차 중 어떤 부분이 분명하지는 않지만 내 문제가있는 곳이있을 수 있습니다.
그런 이유로 ORA-24344가 발생합니까? – Mushy
@ 무시 - 네 것처럼 보일 것입니다. –
그렇다면 함수가 만들어 질 때까지 코드 줄을 주석 처리해야합니까? 그거 제안 해 줄래? – Mushy