DB2自定义函数中case的问题

[复制链接]
查看11 | 回复3 | 2016-2-2 09:36:33 | 显示全部楼层 |阅读模式
CREATE FUNCTION aa(I INTEGER)
RETURNS INTEGER
LANGUAGE SQL
SPECIFIC aa
READS SQL DATA
BEGIN ATOMIC
CASE I
WHEN 0 THEN
RETURN 0;
WHEN 1 THEN
RETURN 1;
WHEN 2 THEN
RETURN 2;
WHEN 3 THEN
RETURN 3;
END CASE;
END
只是一个简单的case语句,就报错,但是如果是改成存储过程就成功,很是费解?请高手赐教,谢谢!
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
报什么错呢?
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
报错:
DB21034EThe command was processed as an SQL statement because it was not a
valid Command Line Processor command.During SQL processing it returned:
SQL0104NAn unexpected token "CASE WHEN" was found following "
".Expected tokens may include:"".LINE NUMBER=34.SQLSTATE=42601
但是,如果是这样就成功:
CREATE FUNCTION aa(I INTEGER)
RETURNS INTEGER
LANGUAGE SQL
SPECIFIC aa
READS SQL DATA
RETURN (
CASE I

WHEN 1 THEN 1

WHEN 2 THEN 2

WHEN 3 THEN 3
ELSE 4
END
)
@
回复

使用道具 举报

千问 | 2016-2-2 09:36:33 | 显示全部楼层
CREATE FUNCTION的body里需要return语句阿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行