데이터베이스 사용자와 테이블 내용을 기반으로 행을 반환하는 방법은 무엇입니까?

아 비랄 스리 바스타 바

다음 표가 있습니다.

id name       score
 1 SYS        4
 2 RHWTT      5
 3 LEO        4
 4 MOD3_ADMIN 5
 5 VPD674     4
 6 SCOTT      5
 7 HR         4
 8 OE         5
 9 PM         4
10 IX         5
11 SH         4
12 BI         5
13 IXSNEAKY   4
14 DVF        5

Oracle SQL에서 다음 사항을 확인하는 정책 함수를 만들고 싶습니다.

  1. 사용자 (Leo)가이 테이블에서 select 문을 실행하면 3 LEO 4.
  2. sys_dba는 무슨 일이 있어도 모든 결과를 얻습니다.

Scott이 만든이 테이블에 대해 Leo에게 선택 권한을 부여했습니다.

이 복잡한 PL / SQL 함수를 작성하는 데 어려움을 겪고 있습니다. 다음을 시도했는데 컴파일 오류가 표시됩니다. 또한 내가하려는 일을하지 않는다고 생각합니다.

CREATE FUNCTION no_show_all (
    p_schema    IN NUMBER(5),
    p_object    IN VARCHAR2
)
    RETURN 
AS
BEGIN
    RETURN 'select avg(score) from scott.rating';
END;
/
리틀 풋

이전 질문과 게시 한 정보를 기반으로 질문을 이해 한 방법은 다음과 같습니다 select. 전체 테이블에 대해 모든 사용자 에게 권한 부여한 경우 모든을 가져올 수 있습니다. 값을 더 제한해야합니다.

함수에 대해 이야기하고있는 한 가지 옵션은 casein where을 사용하는 것 입니다 .

여기에 예가 있습니다.

샘플 데이터 :

SQL> create table rating as
  2    select 1 id, 'sys' name, 4 score from dual union all
  3    select 3,    'leo'     , 3 from dual union all
  4    select 6,    'scott'   , 5 from dual union all
  5    select 7,    'hr'      , 2 from dual;

Table created.

함수:

  • 사용자 이름을 매개 변수로 허용합니다 (마인드 레터 케이스! 제 예에서는 모든 것이 소문자입니다. 아마도 upper함수 나 이와 비슷한 것을 사용해야 할 것입니다)
  • case말한다 : par_user이 같으면 sys모든 행을 가져 오도록합니다. 그렇지 않으면 이름 열의 값이 다음과 같은 행만 가져옵니다.par_user
  • 결과를 반환

그래서:

SQL> create or replace function f_rating (par_user in varchar2)
  2    return number
  3  is
  4    retval number;
  5  begin
  6    select avg(score)
  7      into retval
  8      from rating
  9      where name = case when par_user = 'sys' then name
 10                        else par_user
 11                   end;
 12    return retval;
 13  end;
 14  /

Function created.

해 보자:

SQL> select f_rating('sys') rating_sys,
  2         f_rating('hr')  rating_hr
  3  from dual;

RATING_SYS  RATING_HR
---------- ----------
       3,5          2

SQL>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

데이터 세트와 데이터 테이블을 사용하여 데이터베이스없이 크리스탈 보고서 C #을 만들고이 데이터 테이블을 내 변수로 채우는 방법은 무엇입니까?

분류에서Dev

MySQL 데이터베이스 값을 기반으로 채워진 html 테이블의 행을 삭제하는 방법은 무엇입니까?

분류에서Dev

다른 데이터베이스의 동일한 테이블이있는 테이블을 기반으로 데이터베이스의 테이블 레코드를 업데이트하는 방법은 무엇입니까?

분류에서Dev

내 데이터베이스에서 반환 된 값을 자르는 방법은 무엇입니까?

분류에서Dev

선택한 옵션을 기반으로 데이터베이스 MySQL의 텍스트 상자에 데이터를 표시하는 방법은 무엇입니까?

분류에서Dev

C #의 데이터 테이블에서 문자열 값을 반환하는 방법은 무엇입니까?

분류에서Dev

.net의 다른 데이터 테이블을 기반으로 하나의 데이터 테이블 행을 제거하는 방법은 무엇입니까?

분류에서Dev

데이터베이스 내부의 열로 테이블을 정렬하는 방법은 무엇입니까?

분류에서Dev

Windows Form 응용 프로그램을 사용하여 ComboBox에서 데이터베이스 테이블을 검색하는 방법은 무엇입니까?

분류에서Dev

사용자 정의 기능을 사용하여 여러 HTML 테이블을 Pandas 데이터 프레임으로 변환하는 방법은 무엇입니까?

분류에서Dev

OS 인증을 사용하여 Oracle 데이터베이스를 시스템 사용자로 내보내는 방법은 무엇입니까?

분류에서Dev

맞춤 매개 변수를 기반으로 한 테이블 이름에서 Python과 유사한 문자열 형식을 사용하여 Google 데이터 스튜디오에서 BigQuery 테이블을 쿼리하는 방법은 무엇입니까?

분류에서Dev

laravel을 사용하여 기존 데이터베이스에 테이블을 추가하는 방법은 무엇입니까?

분류에서Dev

mySQL을 사용하여 현재 데이터베이스 테이블의 정보로 다른 데이터베이스 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

asp.net 웹 양식에서 데이터베이스 테이블의 행을 기반으로 텍스트 상자를 동적으로 만드는 방법은 무엇입니까?

분류에서Dev

SQL : 첫 번째 데이터베이스의 테이블을 업데이트 할 때 두 번째 데이터베이스의 테이블을 자동으로 업데이트하는 방법은 무엇입니까?

분류에서Dev

데이터베이스에서 테이블을 쿼리하고 데이터를 하나로 복사하는 방법은 무엇입니까?

분류에서Dev

테이블 X에 대한 쿼리 결과를 기반으로 테이블 Y의 행을 반환하는 방법은 무엇입니까?

분류에서Dev

JavaScript를 사용하여 사용자 입력을 효율적으로 기록하고 데이터베이스에 저장하는 방법은 무엇입니까?

분류에서Dev

데이터베이스에서 기록 된 사용자 user_id를 가져 와서 다른 테이블에 삽입하는 방법은 무엇입니까?

분류에서Dev

OpenPyXL을 사용하여 Excel 테이블의 모든 행을 반복하는 방법은 무엇입니까?

분류에서Dev

Power BI Dataflow의 엔터티로 SQL 데이터베이스 테이블을 자동 업데이트하는 방법은 무엇입니까?

분류에서Dev

데이터베이스 값을 기반으로 파일을 만드는 방법은 무엇입니까?

분류에서Dev

사용자 이름으로 데이터베이스 테이블에서 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

동일한 테이블 데이터의 두 열을 기반으로 테이블에서 행을 삭제하는 방법은 무엇입니까?

분류에서Dev

사용자 이름을 기반으로 사용자 프로필을 얻는 방법은 무엇입니까?

분류에서Dev

부모 테이블을 기반으로 자식 테이블의 열 값을 자동 업데이트하는 방법은 무엇입니까?

분류에서Dev

문자열에 데이터베이스 테이블 값을 설정하는 방법은 무엇입니까?

분류에서Dev

양식에서 데이터베이스 테이블을 디자인하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    데이터 세트와 데이터 테이블을 사용하여 데이터베이스없이 크리스탈 보고서 C #을 만들고이 데이터 테이블을 내 변수로 채우는 방법은 무엇입니까?

  2. 2

    MySQL 데이터베이스 값을 기반으로 채워진 html 테이블의 행을 삭제하는 방법은 무엇입니까?

  3. 3

    다른 데이터베이스의 동일한 테이블이있는 테이블을 기반으로 데이터베이스의 테이블 레코드를 업데이트하는 방법은 무엇입니까?

  4. 4

    내 데이터베이스에서 반환 된 값을 자르는 방법은 무엇입니까?

  5. 5

    선택한 옵션을 기반으로 데이터베이스 MySQL의 텍스트 상자에 데이터를 표시하는 방법은 무엇입니까?

  6. 6

    C #의 데이터 테이블에서 문자열 값을 반환하는 방법은 무엇입니까?

  7. 7

    .net의 다른 데이터 테이블을 기반으로 하나의 데이터 테이블 행을 제거하는 방법은 무엇입니까?

  8. 8

    데이터베이스 내부의 열로 테이블을 정렬하는 방법은 무엇입니까?

  9. 9

    Windows Form 응용 프로그램을 사용하여 ComboBox에서 데이터베이스 테이블을 검색하는 방법은 무엇입니까?

  10. 10

    사용자 정의 기능을 사용하여 여러 HTML 테이블을 Pandas 데이터 프레임으로 변환하는 방법은 무엇입니까?

  11. 11

    OS 인증을 사용하여 Oracle 데이터베이스를 시스템 사용자로 내보내는 방법은 무엇입니까?

  12. 12

    맞춤 매개 변수를 기반으로 한 테이블 이름에서 Python과 유사한 문자열 형식을 사용하여 Google 데이터 스튜디오에서 BigQuery 테이블을 쿼리하는 방법은 무엇입니까?

  13. 13

    laravel을 사용하여 기존 데이터베이스에 테이블을 추가하는 방법은 무엇입니까?

  14. 14

    mySQL을 사용하여 현재 데이터베이스 테이블의 정보로 다른 데이터베이스 테이블을 업데이트하는 방법은 무엇입니까?

  15. 15

    asp.net 웹 양식에서 데이터베이스 테이블의 행을 기반으로 텍스트 상자를 동적으로 만드는 방법은 무엇입니까?

  16. 16

    SQL : 첫 번째 데이터베이스의 테이블을 업데이트 할 때 두 번째 데이터베이스의 테이블을 자동으로 업데이트하는 방법은 무엇입니까?

  17. 17

    데이터베이스에서 테이블을 쿼리하고 데이터를 하나로 복사하는 방법은 무엇입니까?

  18. 18

    테이블 X에 대한 쿼리 결과를 기반으로 테이블 Y의 행을 반환하는 방법은 무엇입니까?

  19. 19

    JavaScript를 사용하여 사용자 입력을 효율적으로 기록하고 데이터베이스에 저장하는 방법은 무엇입니까?

  20. 20

    데이터베이스에서 기록 된 사용자 user_id를 가져 와서 다른 테이블에 삽입하는 방법은 무엇입니까?

  21. 21

    OpenPyXL을 사용하여 Excel 테이블의 모든 행을 반복하는 방법은 무엇입니까?

  22. 22

    Power BI Dataflow의 엔터티로 SQL 데이터베이스 테이블을 자동 업데이트하는 방법은 무엇입니까?

  23. 23

    데이터베이스 값을 기반으로 파일을 만드는 방법은 무엇입니까?

  24. 24

    사용자 이름으로 데이터베이스 테이블에서 데이터를 검색하는 방법은 무엇입니까?

  25. 25

    동일한 테이블 데이터의 두 열을 기반으로 테이블에서 행을 삭제하는 방법은 무엇입니까?

  26. 26

    사용자 이름을 기반으로 사용자 프로필을 얻는 방법은 무엇입니까?

  27. 27

    부모 테이블을 기반으로 자식 테이블의 열 값을 자동 업데이트하는 방법은 무엇입니까?

  28. 28

    문자열에 데이터베이스 테이블 값을 설정하는 방법은 무엇입니까?

  29. 29

    양식에서 데이터베이스 테이블을 디자인하는 방법은 무엇입니까?

뜨겁다태그

보관