如何在PL/SQL中创建RGB值?

5
我在数据库中有一张大表格,需要更新内部称为“ColorByte”的字段。该字段是由RGB值计算而来,主要用于Excel-VBA脚本和WinForms C#应用程序。它表示一个整数值,代表特定的颜色。
在VBA中,它的工作方式如下(仅为澄清而非实际可用代码):
r = 5
g = 50
b = 200

colorByte = RGB(r,g,b)

了解RGB函数的更多信息,请点击此处

现在,我们的研究团队成员已经开发出一个复杂的计算方案,用于从公司特定数据中获得更好的RGB值,并使用VBA进行开发。我必须将这个计算定义在数据库中,以便轻松更新我的大表格并修正“colorByte”字段。确切的计算方法并不重要,因为这些东西都可以工作,但是:

在PL/SQL中是否有与VBA RGB(r,g,b)函数等效的函数,我可以在其中完成我的函数?

或者,有人知道这个函数内部是如何工作的,以便我可以在PL/SQL中重新定义它吗?

2个回答

4
不,Oracle没有内置的RGB()函数,但是公式非常简单。
colorByte = red + (green * 256) + (blue * 256 * 256)

因此,该函数可能如下所示:
create or replace function rgb(
  p_red   in number,
  p_green in number,
  p_blue  in number
) return number
is
begin
  return p_red + (p_green * 256) + (p_blue * 256 * 256);
end;

测试案例:

select rgb(5, 50, 200) as color_value
  from dual

COLOR_VALUE
-----------
   13120005

1 row selected.

2
我认为RGB(r,g,b)只是简单地:
RGB(r,g,b) = 256 * 256 * r + 256 * g + b

也许应该反过来计算(即r + 256*g + 256*256*b),但我相信您可以通过简单的尝试和错误找到正确的方法。在PL/SQL中重建这个过程应该不是问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接