当前位置: 代码迷 >> DB2 >> 为什么小弟我的select count(*) from行报错呢,大家帮小弟我看看,多谢了
  详细解决方案

为什么小弟我的select count(*) from行报错呢,大家帮小弟我看看,多谢了

热度:1447   发布时间:2013-02-26 00:00:00.0
为什么我的select count(*) from行报错呢,大家帮我看看,谢谢了!
CREATE FUNCTION BRAS.FUN_GET_BLACKLIST_STAT(p_i_date1 VARCHAR,p_i_date2 VARCHAR,p_i_organ VARCHAR, p_i_type VARCHAR)
  RETURNS int
BEGIN ATOMIC
  declare v_result int;
  declare v_organ VARCHAR(10);
   
set v_result = 0;

  IF p_i_organ='00000001' THEN
set v_organ='';
ELSE
set v_organ=p_i_organ;
END IF;

IF p_i_type='EXP_DATE' THEN
set v_result = (select count(*) from (select distinct t.ACC_NO from BRAS.BLACK_STAT t where t.NEW_EXP_DATE>=p_i_date1 AND t.NEW_EXP_DATE<=p_i_date2 AND t.ACC_NO LIKE v_organ || '%') t1 );
END IF;

IF p_i_type='BLACK_DATE' THEN
set v_result = (select count(*) from (select distinct t.ACC_NO from BRAS.BLACK_STAT t where t.BLACK_DATE>=p_i_date1 AND t.BLACK_DATE<=p_i_date2 AND t.ACC_NO LIKE v_organ || '%') t1);
END IF;

IF p_i_type='MODI_DATE' THEN
set v_result = (select count(*) from (select distinct t.ACC_NO from BRAS.BLACK_STAT t where t.MODI_DATE>=p_i_date1 AND t.MODI_DATE<=p_i_date2 AND t.ACC_NO LIKE v_organ || '%') t1);
END IF;

IF p_i_type='TRAN_DATE' THEN
set v_result = (select count(*) from (select distinct t.ACC_NO from BRAS.BLACK_STAT t where t.TRAN_DATE>=p_i_date1 AND t.TRAN_DATE<=p_i_date2 AND t.ACC_NO LIKE v_organ || '%') t1);
END IF;

return v_result;
END@

DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0132N LIKE 谓词或 POSSTR
标量函数无效,因为第一个操作数不是字符串表达式或第二个操作数不是字符串。LOCATE
或 POSITION 标量函数无效,因为第一个操作数不是字符串,或者第二个操作数不是字符串

表达式。 LINE NUMBER=16. SQLSTATE=42824

------解决方案--------------------------------------------------------
BLACK_STAT 表中 ACC_NO 字段类型是什么? 是字符型吗? 如果是数字型则不可能用 like
------解决方案--------------------------------------------------------
like关键字附近字段类型不匹配
------解决方案--------------------------------------------------------
用变量的时候是不是应该在变量名前加:啊?

------解决方案--------------------------------------------------------
END@

是什么意思?
------解决方案--------------------------------------------------------
NEW_EXP_DATE,TRAN_DATE 这两字段是什么类型?
------解决方案--------------------------------------------------------
错误提示是字段转换错误,你查查哪些字段类型没对上吧
  相关解决方案