2016-12-05 2 views
5

私は内部で"ColorByte"というフィールドを更新する必要がある私のデータベースに大きなテーブルを持っています。このフィールドはRGB値から計算され、Excel-VBA Skriptsだけでなく、WinForms C#アプリケーションでも使用されます。特定の色を表す1つの整数値を表します。PL/SQLでRGB値を作成する方法は?

これは、VBA(単に明確化のための無作業コード)で、次のように動作します

r = 5 
g = 50 
b = 200 

colorByte = RGB(r,g,b) 

はRGB-機能hereについては、こちらをご覧ください。

私は、研究チームのメンバーがVBAで開発した会社固有のデータから、より良いRGB値を得るための複雑な計算スキームを得ました。私は大きなテーブルを簡単に更新して"colorByte"フィールドを修正するためにこの計算をデータベースで定義しなければなりません。

相当するVBAはありますかRGB(r, g, b)私の機能を完了するためにPL/SQLで使用できる機能はありますか?

また、この関数が内部で行っていることを知っている人は、PL/SQLで再定義できますか?私はRGB(r,g,b)考える

答えて

4

いや、そこにはOracleのビルトインRGB()関数はありませんが、formulaだから関数は、この

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; 

テストケースのように見えるかもしれません非常に簡単

colorByte = red + (green * 256) + (blue * 256 * 256) 

です:

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

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

1 row selected. 
2

は単に

RGB(r,g,b) = 256 * 256 * r + 256 * g + b 

は、おそらくそれは、他の方法で回避(すなわちr + 256*g + 256*256*b)で行いますが、それ私はあなたが簡単な試行錯誤することで、これを見つけることができます確信しています。 PL/SQLでこれを再構築することは問題ありません。

関連する問題