oracle的随机函数是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的随机函数是啥?相关的知识,希望对你有一定的参考价值。

VALUE 函数的第一种形式返回一个大于或等于 0 且小于 1 的随机数;第二种形式返回一个大于或等于 LOW ,小于 HIGH 的随机数。下面是其用法的一个示例:

SQL> select dbms_random.value, dbms_random.value(0,18) from dual;

VALUE DBMS_RANDOM.VALUE(0,18)
---------- -----------------------
0.05863200 12.9840987851451
参考技术A 1、dbms_random.normal
  这个函数不带参数,能返回normal distribution的一个number类型,所以基本上随机数会在-1到1之间。
2、dbms_random.random
  这个也没有参数,返回一个从-power(2,31)到power(2,31)的整数值
3、dbms_random.value
  这个函数分为两种,一种是没有参数,则直接返回0-1之间的38位小数
4、dbms_random.string
  这个函数必须带有两个参数,前面的字符指定类型,后面的数值指定位数(最大60)
参考技术B oracle随机数 需要用 dbms_random
ORACLE的PL/SQL提供了生成随机数和随机字符串的多种方式,罗列如下:
1、小数( 0 ~ 1)
select dbms_random.value from dual;2、指定范围内的小数 ( 0 ~ 100 )
select dbms_random.value(0,100) from dual;3、指定范围内的整数 ( 0 ~ 100 )
select trunc(dbms_random.value(0,100)) from dual;4、长度为20的随机数字串
select substr(cast(dbms_random.value as varchar2(38)),3,20) from dual;5、正态分布的随机数
select dbms_random.normal from dual;6、随机字符串
select dbms_random.string(opt, length) from dual; opt可取值如下:
'u','U' : 大写字母
'l','L' : 小写字母
'a','A' : 大、小写字母
'x','X' : 数字、大写字母
'p','P' : 可打印字符

7、随机日期
select to_date(2454084+TRUNC(DBMS_RANDOM.VALUE(0,365)),'J') from dual通过下面的语句获得指定日期的基数
select to_char(sysdate,'J') from dual;8、生成GUID
select sys_guid() from dual;

oracle pl sql函数重载的语法是啥?

【中文标题】oracle pl sql函数重载的语法是啥?【英文标题】:what is the syntax for oracle pl sql function overloading?oracle pl sql函数重载的语法是什么? 【发布时间】:2020-09-27 10:48:01 【问题描述】:

我正在尝试在 oracle live plsql 中执行函数重载。在我能找到的任何地方,都没有适用于函数重载的基本语法。

使用 1 个参数

create or replace function area(a in number)
return number is
begin
    return a*a;
end;

使用2个参数

create or replace function area(a in number, b in number)
return number is
begin
    return a*b;
end;

函数在执行后被创建。但是,在函数调用过程中出错。

declare
begin
    dbms_output.put_line(area(5));
    dbms_output.put_line(area(3, 4));
end;

帮我解决错误并将这段代码构造成函数重载的基本语法。

ORA-06550:第 3 行,第 31 列: PLS-00363:表达式“5”不能用作赋值目标

【问题讨论】:

【参考方案1】:

正如documentation 所说:

PL/SQL 允许您重载嵌套子程序、封装子程序和类型方法

独立存储过程(函数)无关。

因此,如果将这些函数放入一个包中,它会按预期工作:

SQL> create or replace package pkg_test as
  2    function area (a in number) return number;
  3    function area (a in number, b in number) return number;
  4  end;
  5  /

Package created.

SQL> create or replace package body pkg_test as
  2    function area(a in number)
  3    return number is
  4    begin
  5        return a*a;
  6    end;
  7    function area(a in number, b in number)
  8    return number is
  9    begin
 10        return a*b;
 11    end;
 12  end;
 13  /

Package body created.

SQL> begin
  2      dbms_output.put_line(pkg_test.area(3, 4));
  3      dbms_output.put_line(pkg_test.area(5));
  4  end;
  5  /
12
25

PL/SQL procedure successfully completed.

SQL>

【讨论】:

谢谢@Littlefoot。我在包中尝试了相同的方法并且它有效,但是有没有办法让它在没有包的情况下单独工作。??? 不客气。据我所知,没有。 @Littlefoot,你用哪个编辑器来处理 PL/SQL 代码?看起来不错! 我能理解 :-) @Soumendra:当我没有那么多代码并且没有 TOAD 时(即我不工作时),我就是这样做的。 TOAD 的格式化程序很好地完成了它的工作并且很好地格式化了代码。我在家使用的 GUI 是 SQL Developer,但我不喜欢它格式化代码的方式。有时 - 当有人发布大量未格式化的代码时 - 我会使用一些在线 SQL 格式化程序(没有任何喜欢的;必要时只需谷歌即可)。【参考方案2】:
set serveroutput on
declare
   function area(a in number,
                 b in number default null)
     return number is
   begin
   
      if b is null then
         return a*a;
      end if;
   
      return a*b;
   
   end area;
begin
   dbms_output.put_line(area(5));
   dbms_output.put_line(area(3, 4));
end;

HTH。

【讨论】:

以上是关于oracle的随机函数是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle随机函数

delphi7的随机函数是啥?最好是有例子,并且随机函数在一定范围内。

java中产生随机数的函数是啥

C#中能得到随机数的函数是啥啊,怎么才能将随机输出的随机数赋给一个变量?

sql中CONVERT()函数在oracle中是啥?

Oracle dbms_random随机函数包