0

특정 스키마 개체에 부여하는 프로 시저를 만들려고합니다. 프로 시저가 제대로 컴파일 된 것 같지만 실행시 오류가 발생합니다.부여를 제공하는 프로 시저, 잘못된 테이블 이름 오류

이 간단한 절차에서 잘못된 점이 있지만 이유를 찾을 수 없습니다.

절차 :

create or replace procedure ch.grants_to_schema_objects(
      i_target_schema varchar2, 
      i_target_user varchar2) as 
begin 
for mt in (SELECT 'GRANT SELECT ON ' || chr(39) 
       || i_target_schema || chr(39) 
       || '.' || TABLE_NAME || ' TO ' || chr(39) 
       || i_target_user || chr(39) 
       || ' WITH GRANT OPTION' as grnt 
      FROM ALL_TABLES 
      WHERE OWNER = i_target_schema) loop 
    dbms_output.put_line(mt.grnt); 
    execute immediate mt.grnt; 
end loop; 
end; 

전화 :

execute ch.grants_to_schema_objects('SR', 'CH'); 

오류 : CHR(39) 그것을 깨는

ORA-06512: "CH.GRANTS_TO_SCHEMA_OBJECTS", line 5 
ORA-06512: line 1 
00903. 00000 - "invalid table name" 
*Cause:  
*Action: 
+5

왜 chr (39)? 너는 그것을 필요로하지 않을지도 모른다. – Aleksej

+0

오류가 발생하기 직전의 결과 ('set serveroutput on'이 있다고 가정 할 때)는 무엇입니까? 수동으로 실행하면 어떻게됩니까? Aleksej 스키마 및 사용자 이름 주위의 따옴표가 올바르지 않습니다. –

답변

0

. CHR(34)으로 바꾸십시오 : "으로 사용자 이름을 분리해야합니다 ('이 아님).

관련 문제