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 중국어 웹사이트의 기타 관련 기사를 참조하세요!