> 데이터 베이스 > MySQL 튜토리얼 > 권한을 부여하지 않고 DBMS_LOCK.sleep을 어떻게 시뮬레이션할 수 있습니까?

권한을 부여하지 않고 DBMS_LOCK.sleep을 어떻게 시뮬레이션할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-31 10:03:13
원래의
597명이 탐색했습니다.

How Can I Simulate DBMS_LOCK.sleep Without Granting Privileges?

ORACLE의 수면 함수 대안

DBMS_LOCK 패키지에 대한 명시적 권한 부여의 필요성을 완화하기 위해 대체 접근 방식을 사용하여 DBMS_LOCK.sleep의 기능을 시뮬레이션할 수 있습니다. 절차. 이 방법은 "끔찍한 해킹"으로 인정되지만 권한 수정에 의존하지 않고도 해결 방법을 제공합니다.

아래 사용자 정의 기능은 타임스탬프 기반 접근 방식을 사용합니다.

-- Custom sleep function without DBMS_LOCK
CREATE OR REPLACE FUNCTION MYSCHEMA.ALTERNATIVE_SLEEP
(
  IN_TIME  NUMBER
)
RETURN INTEGER IS
  v_now DATE;
BEGIN
  -- Capture the current time
  SELECT SYSDATE INTO v_now FROM DUAL;

  -- Loop until the current time exceeds the initial time + input seconds
  LOOP
    EXIT WHEN v_now + (IN_TIME * (1/86400)) <= SYSDATE;
  END LOOP;

  RETURN 1;
EXCEPTION
  WHEN OTHERS THEN
    RAISE;
    RETURN 1;
END ALTERNATIVE_SLEEP;
로그인 후 복사

이것은 함수는 일련의 날짜 및 시간 조작을 사용하여 수면과 같은 동작을 달성합니다. 초기 시간에 입력된 초를 더해 현재 시간이 원하는 수면 시간을 초과했는지 반복적으로 확인합니다. 이 조건이 충족되면 함수는 루프를 종료합니다.

이 사용자 정의 함수의 사용법은 원래 접근 방식과 유사합니다.

SELECT ALTERNATIVE_SLEEP(10.5) FROM DUAL;
로그인 후 복사

이 방법에는 단점이 있으므로 권장되지 않습니다. 실용적인 용도로 사용하세요.

위 내용은 권한을 부여하지 않고 DBMS_LOCK.sleep을 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿