Oracle 10g 데이터베이스에 PL/SQL 패키지가 있고 패키지 (및 따라서 함수)의 스키마 이름을 반환하는 함수를 작성하려고합니다.)이 정의되어 있습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?함수 내에서 PL/SQL 함수의 스키마를 결정하는 방법
답변
create function xcurr return varchar2 is
v_curr varchar2(32);
begin
SELECT SYS_CONTEXT ('USERENV', 'CURRENT_USER') into v_curr from dual;
return v_curr;
end;
이것은 PL/SQL 오브젝트에 AUTHID CURRENT_USER가없는 한 작동합니다.
아마도 쉬운 방법이 있지만 dbms_utility.format_call_stack
을 사용하고 결과를 구문 분석하여 스키마 이름을 얻을 수 있습니다. 이것은 Oracle 9i에서 작동합니다.
오라클 11은 사용자에게 오류 메시지를 표시하지 않습니다. – Victor
Gary Myers' answer에서 사용되는 Oracle 10g CURRENT_USER부터 사용되지 않습니다. 대신 SESSION_USER 매개 변수를 사용하는 것이 좋습니다.
기업 사용자의 경우 스키마를 반환합니다. 다른 사용자의 경우 현재 사용자가 인증 된 데이터베이스 사용자 이름 을 반환합니다. 이 값은 세션 기간 동안 동일하게 유지됩니다.
나는 CURRENT_SCHEMA를 사용합니다. ALTER SESSION SET CURRENT_SCHEMA
문을 발행하면 CURRENT_SCHEMA가 변경되어이 두 명령 사이에 약간의 차이가 있습니다.
이중에서도 SELECT 할 필요가 없습니다. SYS_CONTEXT의 리턴 값을 변수에 직접 지정할 수 있습니다.
DECLARE
v_current_schema varchar2(30);
BEGIN
v_current_schema := SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA');
dbms_output.put_line('I am using the schema [' || v_current_schema || ']');
END;
별로 다르지 않지만 다른 대답이 마음에 들지 않는 몇 가지 이유가 있습니다. 1. 이중을 변수로 선택하지 않고 할당하면됩니다. 2. CURRENT_USER는 [더 이상 사용되지 않습니다.] (http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htm)입니다. 3. CURRENT_SCHEMA와 SESSION_USER 사이에는 사소하지만 뚜렷한 차이점이 있습니다. –
공정한 @Tom. 나는 몰랐다. 이 모든 것을 반영하도록 답변을 업데이트했습니다. 한번보세요. 변경하고 싶은 것이 있는지 확인하십시오. – Ben
- 1. PLSQL 함수 도움말
- 2. PLSQL - 그룹 함수의 매개 변수식 정의
- 3. SharePoint 내에서 응용 프로그램을 개발해야하는지 결정하는 방법
- 4. grails보기에서 컨트롤러/함수 호출자를 결정하는 방법
- 5. scala의 함수 내에서 함수의 이름을 복구 할 수 있습니까?
- 6. Rhino 모의를 사용하여 공용 함수 내에서 개인 함수의 종속성 제거
- 7. 함수 내에서 함수 호출
- 8. 함수 내에서 MIPS 함수
- 9. 비동기 함수 내에서 함수 반환 true
- 10. 루아 함수의 서명을 결정하는 방법이 있습니까?
- 11. 우편 번호 근접성/범위를 결정하는 MySQL 함수
- 12. 멤버 함수 내에서 가상 함수 호출
- 13. PLSQL 삽입
- 14. 템플릿 클래스 내에서 함수의 템플릿 전문화
- 15. 자바 스크립트 함수 내에서 반영
- 16. 다른 함수의 반환을 반환하는 함수
- 17. jQuery.prepend() 함수의 콜백 함수 앞에
- 18. 다른 함수의 함수 인수에 액세스합니까?
- 19. PLSQL : 나는이 같은 절차를
- 20. 함수 내에서 함수의 이름을 얻는 방법 (또는 함수에 대한 "자체"참조)은 무엇입니까?
- 21. DB 내에서 pdo 통신을 위해 함수 내에서 연결을 정의하는 방법
- 22. 선택적 인수로 PHP 함수의 인수 수 얻기
- 23. 함수 내에서 정적 변수를 재설정하는 방법
- 24. javascript 함수 내에서 updatepanel을 트리거하는 방법
- 25. 함수 내에서 $ _POST가 필요한 스크립트를 호출하는 방법
- 26. 함수 내에서 함수를 반환하는 방법 (반향과 반대로)
- 27. jsp의 함수 내에서 "request"객체를 사용하는 방법
- 28. system() 함수 내에서 C++ 변수를 사용하는 방법
- 29. 멤버 변수를 사용하거나 함수 내에서 변수를 선언해야합니까?
- 30. asp.net mvc3 영역 내에서 파일의 상대 경로를 결정하는 방법
와우. 나는 그것에 대해 알고 있었지만 함수가 실행중인 사용자가 아니라 현재 사용자를 리턴 할 것으로 예상했습니다. 감사! –