-1
지정된 사용자가 작성한 모든 테이블을 표시하는 프로 시저를 작성하려고합니다. 여기에 지금까지 무엇을 가지고 :이 옳은 길 경우 궁금 해서요사용자 PL SQL 프로 시저에 의해 작성된 모든 테이블 표시
CREATE OR REPLACE PROCEDURE user_tables
@username VARCHAR(50),
@result varchar(100000) OUTPUT
AS
BEGIN
-- Execution section
Set result = SELECT * FROM ALL_TABLES WHERE OWNER = @username;
EXCEPTION
-- Exception section
WHEN no_data_found THEN
dbms_output.put_line('User does not exist');
WHEN others THEN
dbms_output.put_line('Error!');
END;
, 그리고 어떻게이 작업 여기
에게 있습니다 @ "및"Set "은 Oracle이 아닌 SQL-Server 구문입니다. 그래서 아니오, 이것은 올바른 길이 아닙니다. NO_DATA_FOUND는 잘못된 사용자 이름뿐만 아니라 몇 가지 이유로 발생할 수 있습니다. 나는 CURSOR로 FOR 루프를 제안하고 루프에서 사용자 컨텐츠를 행 단위로 표시한다. – Stilgar
"작성한 모든 테이블"은 아직 존재합니까? 3 개월 전에 USER가 작성한 테이블과 ** 지난 주 ** 테이블을 표시하지 않습니다. 너 신경 안써? 그렇지 않으면,'USER'가 현재 소유하고있는 테이블만을 찾고 있습니다. – mathguy
나는 사용자가 아니라 지정된 사용자를 의미한다고 생각합니다. 그렇다면 all_tables 대신 user_tables를 사용할 수 있습니다. 물론 all_tables는 볼 권한이있는 테이블 만 제공합니다. – Stilgar