2012-03-05 2 views
1

.... 내가를 만들 필요가sql oracle. 절차 커서 매개 변수없이 나는 다음과 같은 테이블과 유형을 만들 수 있습니다

CREATE TYPE ACTOR_QUOTE_TYPE AS OBJECT ( 
Movie_Title CHAR(36), 
Year NUMBER, 
Role CHAR(36), 
Quote CHAR(255) 
) 
/

CREATE TYPE AQ_NT AS TABLE OF ACTOR_QUOTE_TYPE 
/

CREATE TABLE ACTOR_QUOTES (
ACTORID CHAR(5), 
QUOTES AQ_NT 
) NESTED TABLE QUOTES STORE AS ACTOR_QUOTES_NT 
/

.....

PL/SQL 프로 시저 호출 INIT_ACTOR_QUOTES 루프가 :

ACTOR 테이블에서 모든 ACTORID를 읽고 ACTOR_QUOTES 테이블 (테이블의 카디널리티가 동일 함)의 각 행에 대한 ACTORID 특성에 INSERT하고 동시에 다음 초기 값을 해당 테이블의 첫 번째 행에만 INSERT합니다. ACTOR_QUOTES 테이블의 각 행에 중첩 테이블을 QUOTES합니다.

(MOVIE_TITLE, 연도, 역할, 견적)는 즉시 각 INSERT 사용 후 모든 행을 삭제합니다 ('', NULL, '', '') 또한

과 동시에 각각 설정 ACTOR_QUOTES 테이블의 각 ACTORID에 속하는 각 행의 중첩 테이블에서. 나는이 코드를 컴파일 오류를 받고 있어요

....

CREATE OR REPLACE PROCEDURE INIT_ACTOR_QUOTES 
AS 
CURSOR actorID_cursor IS 
SELECT actorID FROM Actor; 
BEGIN 

FOR row IN actorID_cursor LOOP 
INSERT actorID INTO ACTOR_QUOTES; 

INSERT INTO actor_Quotes_NT VALUES ('', NULL, ' ', ''); 
DELETE (*) FROM actor_Quotes_NT ('', NULL, ' ', ''); 
END LOOP; 
END INIT_ACTOR_QUOTES ; 

/
Warning: Procedure created with compilation errors. 






SQL> show errors; 
Errors for PROCEDURE INIT_ACTOR_QUOTES: 

LINE/COL ERROR 
-------- ----------------------------------------------------------------- 
7/2  PL/SQL: SQL Statement ignored  
7/9  PL/SQL: ORA-00925: missing INTO keyword 
9/2  PL/SQL: SQL Statement ignored 
9/10  PL/SQL: ORA-00928: missing SELECT keyword 
SQL> 

모든 제발 도와주세요 ....

+0

"컴파일 오류로 생성 된 프로 시저"메시지를 받으면'SHOW ERRORS; '(또는 단지'SHO ERR')를 입력하여 오류를 볼 수 있습니다. 사실, 모든 SQL 작성 프로 시저 스크립트에는 끝에 'SHOW ERRORS;'가 포함되어 있습니다. 오류가 있으면 확실히보고 싶을 것이고, 없으면 'SHOW ERRORS;'를 그냥 인쇄하면됩니다. "오류 없음." – ruakh

+0

한편 'NULL'은 'NULL'과 같지 않습니다. ''NULL ''은 4 개의 문자가있는 문자열입니다. 'NULL'은 대략 "unknown"또는 "indeterminate"를 의미하는 특별한 값입니다. 오라클 (다른 DBMS에서는 그렇지 않지만)에서 '' '는'NULL '과 동일합니다. – ruakh

+0

경고 : 컴파일 오류로 인해 생성 된 프로 시저. SQL> 오류 표시; 절차의 INIT_ACTOR_QUOTES에 대한 오류 : LINE/COL 오류 7/2 PL/SQL : SQL 문 무시 7/9 PL/SQL : ORA-00925 : 키워드 INTO없는 9/2 PL/SQL : SQL 문을 무시 9/10 PL/SQL : ORA-00928 : SELECT 키워드가 누락되었습니다 SQL> – user1055487

답변

3

첫 번째 오류 : 테이블에 삽입 할 때 우리는에 값을 삽입해야 모든 코일 열 또는 그렇지 않으면 우리가 채우고있는 것을 지정하십시오.

두 번째 오류 : 커서의 열을 참조 할 때 데이터를 가져 오는 변수 (예 : row)를 참조해야합니다.

셋째 : 사용자 정의 유형을 채울 때 유형을 지정해야합니다.

네 번째 : 중첩 테이블을 채울 때 수집 할 개체 유형과 개체 유형을 모두 지정해야합니다.

다섯째 : 중첩 테이블은 테이블의 열이므로 INSERT 문에 할당하거나 UPDATE를 사용하여 하위 쿼리에 할당해야합니다. 어떤 AQ를 호출하지 마십시오에 의해으로

insert into ACTOR_QUOTES 
    (actorid, quote)s 
values 
    (row.actorid 
     , AQ_NT ( 
      ACTOR_QUOTE_TYPE 
      ('Dirty Harry', 1970, 'Inspector Callahan', 'Do you feel lucky punk?') 
      , ACTOR_QUOTE_TYPE 
      ('Sudden Impact', 1983, 'Inspector Callahan', 'Make my day') 
     ) 
    ); 

, 잘못이라는 변수의 주제에 :

그래서 당신이 정말로 원하는 것을 다음과 같습니다 무언가이다. 오라클 어드밴스 큐잉 (Or Advance Queuing) 기능의 약어로, 혼란의 원인이됩니다.