2013-01-15 2 views
-1

아래 절차에서는 approval_redirect_log 테이블의 외래 키인 approval_log_id 열에 여러 개의 ID 레코드를 삽입하려고합니다.오라클 저장 프로 시저 여러 레코드 삽입

다른 테이블 approval_log에서 approval_log_id가 표시됩니다. 첫 번째 열에 대한 선택 쿼리는 다른 데이터와 함께 삽입해야하는 여러 ID를 반환합니다. 모든 열에 대해 다른 열 데이터를 반복해야합니다.

첫 번째 열의 경우 여기서 잘못된 것은 무엇입니까?

PROCEDURE REDIRECT_APPROVAL_LOG_INSERT(
vAPPROVAL_LOG_ID approval_redirect_log.approval_log_id%type, 
vREDIRECTED_FROM APPROVAL_REDIRECT_LOG.redirected_from%type, 
vREDIRECTED_TO APPROVAL_REDIRECT_LOG.redirected_to%type, 
vREDIRECTED_BY approval_redirect_log.redirected_by%type) AS 

    BEGIN 

    INSERT INTO APPROVAL_REDIRECT_LOG(
    APPROVAL_LOG_ID, 
    REDIRECTED_FROM, 
    REDIRECTED_TO, 
    REDIRECTED_BY, 
    REDIRECTED_ON) 
    VALUES 
    (select approval_log_id 
    from approval_log 
    where accept_reject is null and approval_recid=vREDIRECTED_FROM 
    , 
    vREDIRECTED_FROM, 
    vREDIRECTED_TO, 
    vREDIRECTED_BY, 
    sysdate 
); 

    END REDIRECT_APPROVAL_LOG_INSERT; 
+0

귀하의 구문이 완전히 잘못이다'values' 선택 /, 당신은 하나의 열을 선택하지만, 많은 삽입 삽입 표시되지해야의 끝이 절은 겁내는. 우선 스토어드 프로 시저 외부에서 작업하도록 한 다음 스토어 프로 시저로 변환하는 것이 좋습니다. – Mat

+0

Oh..ok.. mssql 개발자이고 plsql을 처음 사용하기 때문에 구문 오류가 발생할 가능성이 있습니다. 감사. 당신의 제안을 시도 할 것입니다. – sachin

답변

2

당신은해야합니다

INSERT INTO APPROVAL_REDIRECT_LOG(
    APPROVAL_LOG_ID, 
    REDIRECTED_FROM, 
    REDIRECTED_TO, 
    REDIRECTED_BY, 
    REDIRECTED_ON) 
select approval_log_id, 
      vREDIRECTED_FROM, 
      vREDIRECTED_TO, 
      vREDIRECTED_BY, 
      sysdate 
from approval_log 
where 
    accept_reject is null 
    and approval_recid=vREDIRECTED_FROM; 
+0

고마움, 나는 곧 다시 당신에게 돌아갈 것이다. – sachin

+0

그것은 일했다. .. 고맙다. .. :) – sachin