我的数据库中有一个大表,我需要在其中更新内部调用的"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] 删除。
我来说两句