PLSQL 랜덤 정수 생성
Oracle Sql developer 11g에서 랜덤 정수를 생성하여 변수에 할당하려면 어떻게 해야 합니까?이것이 제가 지금까지 시도한 것입니다.
S_TB := SELECT dbms_random.value(1,10) num FROM dual;
이 코드로 오류가 발생했습니다.
S_TB := SELECT dbms_random.value(1,10) num FROM dual
Error report -
Unknown Command
제 문제를 해결하는 올바른 방법은 무엇입니까?
변수에는 PL/SQL이 필요합니다. 코드가 올바른 PL/SQL 블록인지 여부는 질문에서 알 수 없습니다.PL/SQL에서 변수는 사용 중인 할당 구문이 아닌 INTO 구문을 사용하여 쿼리에서 채워집니다.
declare
txt varchar2(128);
n pls_integer;
begin
-- this is how to assign a literal
txt := 'your message here';
-- how to assign the output from a query
SELECT dbms_random.value(1,10) num
into n
FROM dual;
end;
그러나 쿼리 구문을 사용할 필요는 없습니다.이는 유효하고 더 나은 방법입니다.
declare
n pls_integer;
begin
n := dbms_random.value(1,10);
end;
임의로 균일하게 분포된 연속 정수 집합(아래 예제에서는 1과 10 사이)에 대해 다음을 제안합니다.
select round(dbms_random.value(0.5,10.49999999999),0) from dual
그렇지 않으면 의도치 않게 세트의 첫 번째와 마지막 숫자를 나머지 세트로 선택될 확률의 절반으로 제한합니다.
q3kep 및 GolezTrol에서 지적한 바와 같이 dbms_random.value(x, y)는 x보다 크거나 같고 y보다 작은 값에 대해 균일한 랜덤 분포를 제공합니다.따라서 다음 중 하나가 적합합니다.
select trunc(dbms_random.value(1,11)) from dual
또는
select round(dbms_random.value(0.5, 10.5), 0) from dual
설명서에 따라
또는 난수를 생성하는 함수를 생성할 수 있습니다.이것은 코드의 모든 곳에서 사용할 수 있습니다.
create or replace function RANDOM
return number
is
a number ;
begin
select round(dbms_random.value(1,10)) rnum
into a
from dual;
return a ;
end;
/
출력:
함수가 생성되었습니다.
SQL> 듀얼에서 랜덤을 선택합니다.
랜덤
6
SQL> 듀얼에서 랜덤을 선택합니다.
랜덤
9
만약 당신이 n자리의 무작위 숫자를 얻고 싶다면, 당신은 이것을 할 수 있습니다.
CREATE OR REPLACE FUNCTION NUM_RANDOM(N IN NUMBER)
RETURN NUMBER
AS
BEGIN
RETURN TRUNC (DBMS_RANDOM.VALUE(POWER(10, N - 1), POWER(10, N) - 1));
END NUM_RANDOM;
정수:
select dbms_random.random from dual
양의 정수:
select abs(dbms_random.random) from dual
DECLARE
l_check Integer:=1;
BEGIN
WHILE l_check < 5 LOOP
l_check := DBMS_RANDOM.VALUE(1,10);
DBMS_OUTPUT.PUT_LINE(l_check);
END LOOP;
END;
DBMS_RANDOM.VALUE 범위 내의 임의 값을 제공합니다.
언급URL : https://stackoverflow.com/questions/30417788/plsql-generate-random-integer
'prosource' 카테고리의 다른 글
sql 중첩된 대/소문자 문장 (0) | 2023.07.27 |
---|---|
파워셸에서 XML을 통해 반복하는 방법은 무엇입니까? (0) | 2023.07.27 |
mysql 정렬 문자열 번호 (0) | 2023.07.27 |
$_SERVER["REMOTE_ADDR"]는 방문자 IP가 아닌 서버 IP를 제공합니다. (0) | 2023.07.27 |
이름을 지정할 신호 번호? (0) | 2023.07.27 |