Select ORACLE SQL 내에서 함수 사용

라파엘 모레이라

이 기능이 있습니다.

CREATE FUNCTION ISROOMAVAILABLE(P_ID_ROOM INT, P_DATE DATE) RETURN BOOLEAN
    IS
    V_COUNT INT;
BEGIN
    SELECT count(*)
    INTO V_COUNT
    FROM CHECKIN A
             LEFT JOIN CHECKOUT B ON (A.ID_RESERVATION = B.ID_RESERVATION)
    WHERE A.ID_ROOM = P_ID_ROOM
      AND ((A.DATE >= trunc(P_DATE) AND B.DATE IS NULL)
        OR
           (A.DATE <= trunc(P_DATE) AND B.DATE >= trunc(P_DATE)));
    RETURN (V_COUNT > 0);
END;

특정 날짜에 방 (ID로 식별 됨)을 사용할 수있는 경우 true를 반환합니다.

그리고 위의 함수를 선택하여 결정자로 사용하여 여러 매개 변수를 확인하고 싶습니다.

    SELECT Q.ID, COUNT(R.DATE_OUT - R.DATE_IN) AS DAYS
    FROM QUARTO Q
             JOIN CHECKIN CI ON Q.ID = CI.ID_ROOM
             JOIN RESERVATION R ON CI.ID_RESERVATION = R.ID
    WHERE (EXTRACT(YEAR FROM R.DATE_IN) = EXTRACT(YEAR FROM SYSDATE))
      AND (ISROOMAVAILABLE(Q.ID, SYSDATE))
    GROUP BY Q.ID
    ORDER BY DAYS;

여전히 데이터베이스에서 일부 데이터가 누락 되었기 때문에 함수에서 sysdate를 사용하고 있지만 여전히 "관계형 연산자가 잘못되었습니다"라는 오류가 발생합니다.

"WHERE"절에있는 함수를 사용하는 방법이 있습니까?

포르투갈어의 잘못된 번역을 용서하십시오. 영어로 된 정확한 용어를 모릅니다.

GMB

Oracle WHERE이 SQL 쿼리 에서 PL / SQL 부울을 평가할 수 없다고 생각 합니다.

가장 간단한 방법은 함수를 수정하여 평가할 수있는 것을 반환하는 것입니다. 예를 들어 1true와 0false를 반환 할 수 있습니다 .

CREATE FUNCTION ISROOMAVAILABLE(P_ID_ROOM INT, P_DATE DATE) RETURN INT
    IS
    V_COUNT INT;
BEGIN
    SELECT count(*)
    INTO V_COUNT
    FROM CHECKIN A
             LEFT JOIN CHECKOUT B ON (A.ID_RESERVATION = B.ID_RESERVATION)
    WHERE A.ID_ROOM = P_ID_ROOM
      AND ((A.DATE >= trunc(P_DATE) AND B.DATE IS NULL)
        OR
           (A.DATE <= trunc(P_DATE) AND B.DATE >= trunc(P_DATE)));
    RETURN LEAST(V_COUNT, 1);
END;

그리고:

WHERE ...
  AND ISROOMAVAILABLE(Q.ID, SYSDATE) = 1

함수를 수정할 수없는 경우 SQL에서 평가할 수있는 데이터 유형을 반환하는 다른 함수로 래핑하고 원본 대신 래퍼 함수를 ​​호출해야합니다.

검색어에 대한 관련없는 참고 사항 :

  • EXTRACT(YEAR FROM R.DATE_IN) = EXTRACT(YEAR FROM SYSDATE)차선책입니다. 이것은 직접 필터링으로 더 효율적으로 표현됩니다.
    R.DATE_IN >= TRUNC(SYSDATE, 'YEAR') 
AND R.DATE_IN < ADD_MONTHS(TRUNC(SYSDATE, 'YEAR'), 12)
  • COUNT(R.DATE_OUT - R.DATE_IN)당신이 원하는 것을 할 수 있는지 궁금합니다 . 그것이하는 일은 두 날짜가 아닌 모든 행을 계산하는 것 NULL입니다. 어쩌면 당신은 의미 : SUM(R.DATE_OUT - R.DATE_IN)?

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

eloquent select 문에서 SQL 함수 사용

분류에서Dev

Select SQL Injection (oracle) 내에서 업데이트 쿼리 사용

분류에서Dev

Oracle의 select 문 내에서 select 사용

분류에서Dev

select 문에서 중첩 함수를 사용하는 Oracle group by 절

분류에서Dev

Oracle PL / SQL 함수에서 변수를 사용하는 방법

분류에서Dev

Oracle-SELECT 문에서 변수 사용

분류에서Dev

Insert 문 내에서 SQL 함수 사용

분류에서Dev

CR 함수에서 직접 SQL Select 사용

분류에서Dev

SQL의 사용자 정의 함수 내에서 함수 호출

분류에서Dev

cx_Oracle 내에서 사용자 정의 함수 호출

분류에서Dev

DataFrame 내에서 SQL 함수 적용

분류에서Dev

Django에서 select_related 함수 사용

분류에서Dev

Oracle PL / SQL : 함수 커서

분류에서Dev

Oracle 19c에서 Oracle SQL XMLElement 함수를 사용하여 중첩 된 XML 생성

분류에서Dev

Oracle 사용자 정의 함수가 Oracle Sql Developer 4.0.3.16에서 오류를 표시하는 이유

분류에서Dev

pl / sql oracle 함수 내에서 여러 행 저장 및 반환

분류에서Dev

Oracle pl / sql 함수 내에서 유형 정의

분류에서Dev

.NET에서 단일 명령을 사용하여 Oracle에 SQL INSERT 및 SELECT

분류에서Dev

Oracle SQL에서 함수 바꾸기

분류에서Dev

SQL에서 $ this 유형 함수 사용

분류에서Dev

SQL에서 CASE 함수 사용

분류에서Dev

SQL에서 Group By 함수 사용

분류에서Dev

Oracle 연결 SQL 쿼리에서 변수 사용

분류에서Dev

Oracle APEX SQL의 CASE 문 내에서 IN () 사용

분류에서Dev

SELECT 쿼리 내에 함수를 사용할 수 있습니까?

분류에서Dev

eloquent의 하위 쿼리 함수 내에서 "Select ()"를 사용하는 방법

분류에서Dev

Postgres의 jsonb_array_elements_text 함수 내에서 SELECT 하위 쿼리 사용

분류에서Dev

select 문 내에서 함수를 사용하여 새 열 만들기

분류에서Dev

SQL JSON 함수를 사용하여 Oracle 12c에서 JSON 데이터 생성

Related 관련 기사

  1. 1

    eloquent select 문에서 SQL 함수 사용

  2. 2

    Select SQL Injection (oracle) 내에서 업데이트 쿼리 사용

  3. 3

    Oracle의 select 문 내에서 select 사용

  4. 4

    select 문에서 중첩 함수를 사용하는 Oracle group by 절

  5. 5

    Oracle PL / SQL 함수에서 변수를 사용하는 방법

  6. 6

    Oracle-SELECT 문에서 변수 사용

  7. 7

    Insert 문 내에서 SQL 함수 사용

  8. 8

    CR 함수에서 직접 SQL Select 사용

  9. 9

    SQL의 사용자 정의 함수 내에서 함수 호출

  10. 10

    cx_Oracle 내에서 사용자 정의 함수 호출

  11. 11

    DataFrame 내에서 SQL 함수 적용

  12. 12

    Django에서 select_related 함수 사용

  13. 13

    Oracle PL / SQL : 함수 커서

  14. 14

    Oracle 19c에서 Oracle SQL XMLElement 함수를 사용하여 중첩 된 XML 생성

  15. 15

    Oracle 사용자 정의 함수가 Oracle Sql Developer 4.0.3.16에서 오류를 표시하는 이유

  16. 16

    pl / sql oracle 함수 내에서 여러 행 저장 및 반환

  17. 17

    Oracle pl / sql 함수 내에서 유형 정의

  18. 18

    .NET에서 단일 명령을 사용하여 Oracle에 SQL INSERT 및 SELECT

  19. 19

    Oracle SQL에서 함수 바꾸기

  20. 20

    SQL에서 $ this 유형 함수 사용

  21. 21

    SQL에서 CASE 함수 사용

  22. 22

    SQL에서 Group By 함수 사용

  23. 23

    Oracle 연결 SQL 쿼리에서 변수 사용

  24. 24

    Oracle APEX SQL의 CASE 문 내에서 IN () 사용

  25. 25

    SELECT 쿼리 내에 함수를 사용할 수 있습니까?

  26. 26

    eloquent의 하위 쿼리 함수 내에서 "Select ()"를 사용하는 방법

  27. 27

    Postgres의 jsonb_array_elements_text 함수 내에서 SELECT 하위 쿼리 사용

  28. 28

    select 문 내에서 함수를 사용하여 새 열 만들기

  29. 29

    SQL JSON 함수를 사용하여 Oracle 12c에서 JSON 데이터 생성

뜨겁다태그

보관