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

我的数据库中有一个大表,我需要在其中更新内部调用的"ColorByte"字段。此字段是根据RGB值计算的,主要由Excel-VBA Skripts使用,但在WinForms C#应用程序中也使用。它代表一个整数值,代表一种特定的颜色。

这在VBA中的工作方式如下(没有工作代码只是为了澄清):

r = 5
g = 50
b = 200

colorByte = RGB(r,g,b)

在此处阅读有关RGB功能的更多信息

现在,我有了一个复杂的计算方案,可以从我们公司的特定数据中获得更好的RGB值,这是由我们研究团队的成员在VBA中开发的。我必须在数据库上定义此计算,以便轻松更新我的大表并更正"colorByte"字段。确切的计算并不重要,因为这些东西可以工作,但:

是否RGB(r, g, b)可以在PL / SQL中使用等效的VBA功能来完成我的功能?

还是有人知道此函数的内部功能,以便可以在PL / SQL中重新定义它?

尼克·克拉斯诺夫

不,没有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.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章