3706 teradata 语句报错_执行Teradata UDF触发器数据类型与定义的类型名称不匹配

我有以下Teradata UDF:

REPLACE FUNCTION MIGRATION_TOOL.GET_OBJECT_TYPE(OBJECT_KIND VARCHAR(2))

RETURNS CHARACTER(20)

CONTAINS SQL

SPECIFIC MIGRATION_TOOL.GET_OBJECT_TYPE

COLLATION INVOKER

INLINE TYPE 1

RETURN CASE OBJECT_KIND

WHEN 'O' THEN 'Table' --1

WHEN 'T' THEN 'Table' --1

WHEN 'V' THEN 'View' --2

WHEN 'M' THEN 'Macro' --3

WHEN 'G' THEN 'Trigger' --4

WHEN 'P' THEN 'Stored Procedure' --5

WHEN 'I' THEN 'Join Index' --6

WHEN 'F' THEN 'Function' --7

WHEN 'FK' THEN 'Foreign Key' --0

ELSE 'ND'

END;

我使用udf进行了以下查询:

SELECT A.DATABASE_ID,

B.TABLENAME AS OBJECT_NAME,

GET_OBJECT_TYPE(B.TABLEKIND) AS OBJECT_TYPE,

MAX(CASE WHEN IDCOLTYPE IS NULL THEN 0 ELSE 1 END) AS FLAG_IDENTITY_COLUMN

FROM MIGRATION_TOOL.VW_TERADATA_DATABASE A

INNER JOIN DBC.TABLESV B ON A.DATABASE_NAME = B.DATABASENAME

LEFT JOIN DBC.COLUMNSV C ON B.DATABASENAME = C.DATABASENAME AND B.TABLENAME = C.TABLENAME

WHERE B.TABLENAME NOT LIKE ALL ('BKP%')

GROUP BY 1, 2, 3

查询失败,并显示以下错误消息:

作为单个语句执行。失败[3706:42000]语法错误:数据类型“TableKind”与定义的类型名称不匹配。

运行时间=00:00:00.283

语句1:选择语句失败。

我检查了tablekind的数据类型,它是char(1),因此它应该被接受varchar(2)的udf接受。你知道问题的起因吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值