0

我正在尝试分析 Netezza 服务器上存储过程中使用的代码。

第一步是获取存储过程中包含的定义/代码 - 这可以通过以下任一方式轻松完成:

使用系统视图

select
    PROCEDURE,
    PROCEDURESOURCE
from _v_procedure
where
    PROCEDURE = 'MY_PROC'
;

或使用基表[观点指向此表]

select
    PRONAME,
    PROSRC as PROCEDURESOURCE
from
    DEFINITION_SCHEMA."_T_PROC" P
where
    PRONAME= 'MY_PROC'

现在,一旦我对 PROCEDURESOURCE 列进行一些分析并尝试将此信息写入表中,我总是会收到以下错误:

错误:IBM Netezza SQL 不支持类型“bytea”

复制此错误的简单方法是执行以下操作

create table MY_SCHEMA.TEST_TMP as
with rs as
(
    select
        PRONAME,
        PROSRC
    from
        DEFINITION_SCHEMA."_T_PROC" P
    where
        PRONAME = 'MY_PROC'
)
select * from rs

我已经确定 DEFINITION_SCHEMA."_T_PROC" 中有一列 bytea(列名 = PROBIN)

但是,我没有选择此列,所以我不确定为什么会收到此错误

任何人都可以帮助解决如何将 PROCEDURESOURCE 复制到新表中并绕过“bytea”错误

谢谢

4

1 回答 1

0

3 条建议: 1) 有时“限制所有”技巧会有所帮助:在子查询中使用 LIMIT ALL 有什么好处? 2)或者,做一个“创建外部表”并将你的数据放入一个文件中,然后另一个语句从文件中读回它 3)最后的猜测是你可以显式地将列转换为更良性的数据类型(Varchar() 或类似的)

于 2020-01-22T05:55:01.407 回答