问题描述
我在 Postgresql 数据库中有一个表,它使用 bytea 字段来存储浮点和双精度数组。我有一个使用 plpython3u 扩展名将列转换为双精度数组的函数。
CREATE FUNCTION data.bytea_to_double_array(byte_array BYTEA,num_bytes INTEGER)
RETURNS DOUBLE PRECISION[]
AS $$
if num_bytes == 8:
data_format = 'd'
elif num_bytes == 4:
data_format = 'f'
else:
return None
data = struct.unpack('<' + str(len(byte_array) // num_bytes ) + data_format,byte_array)
return data
$$ LANGUAGE plpython3u;
我正在寻找使用 plperl 扩展的替代功能。我尝试了以下方法:
CREATE FUNCTION data.bytea_to_double_array(byte_array BYTEA,num_bytes INTEGER)
RETURNS DOUBLE PRECISION[]
AS $$
if($_[1] == 8){
$data_format = 'd*';
}elsif ($_[1] == 4){
$data_format = 'f*';
}else{
RETURN None;
}
@data = unpack($data_format,$_[0]);
RETURN @data;
$$ LANGUAGE plperl;
错误:'unpack' 被第 11 行的操作掩码捕获。
任何想法如何纠正这个?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)