鉴于此表,
CREATE TABLE test (
c01 INT,
c02 NUMBER(10,5),
c03 NUMBER(18,10)
);
我使用 OCCI(C++ 库)执行以下 SELECT 查询:
select case(c01) when 10 then c02 else c03 end from test;
在这种情况下,我得到的类型代码是OCCI_SQLT_NUM
,但精度和比例都是0
. 那(0
精度和规模)是什么意思?这是一个错误吗?
在不知道精度/比例的情况下,程序的类型安全、语义和正确性都处于危险之中,因为无法决定将其视为整数还是浮点数。
换句话说,CASE(x) WHEN y THEN a ELSE b
表达式的类型是什么?可以和a
可以吗?我想不是。那么类型是如何计算的呢?INT
b
CHAR[32]