当前位置:我的异常网» DB2 » 为什么下面这段程序不能在DB2命令编辑器中运行?
为什么下面这段程序不能在DB2命令编辑器中运行?
www.myexceptions.net 网友分享于:2013-03-18 浏览:288次
为什么下面这段程序不能在DB2命令编辑器中运行?在线等.
CREATE FUNCTION "BRAS".FUN_GET_LSH_FROM_YJNR ( yjnr VARCHAR(80) )
RETURNS VARCHAR(30)
BEGIN ATOMIC
declare v_startpos real;
declare v_endpos real;
declare v_len real;
declare v_fhy varchar(100);
declare v_lsh varchar(100);
declare Result varchar(30);
set v_startpos = locate('主机流水号:',yjnr);
if(v_startpos = 0) then
return '';
end if;
set v_endpos = locate('|柜员流水号',yjnr);
if(v_endpos = 0) then
return '';
end if;
set v_startpos = v_startpos + 6;
set v_len = v_endpos-v_startpos;
set Result = '';
if (v_len > 0) then
set Result = substr(yjnr,v_startpos,v_len);
end if;
RETURN Result;
END;
错误信息:
CREATE FUNCTION "BRAS".FUN_GET_LSH_FROM_YJNR ( yjnr VARCHAR(80) )
RETURNS VARCHAR(30)
BEGIN ATOMIC
declare v_startpos real
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "C declare v_startpos" 后面找到异常标记
"real"。预期标记可能包括:"END-OF-STATEMENT"。 LINE NUMBER=4. SQLSTATE=42601
declare v_endpos real
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "declare v_endpos " 后面找到异常标记
"real"。预期标记可能包括:"END-OF-STATEMENT"。 SQLSTATE=42601
declare v_len real
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "declare v_len " 后面找到异常标记
"real"。预期标记可能包括:"END-OF-STATEMENT"。 SQLSTATE=42601
declare v_fhy varchar(100)
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "declare v_fhy
varchar"。预期标记可能包括:""。 SQLSTATE=42601
declare v_lsh varchar(100)
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "declare v_lsh
varchar"。预期标记可能包括:""。 SQLSTATE=42601
declare Result varchar(30)
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "declare Result
varchar"。预期标记可能包括:""。 SQLSTATE=42601
set v_startpos = locate('主机流水号:',yjnr)
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "set v_startpos
="。预期标记可能包括:""。 SQLSTATE=42601
if(v_startpos = 0) then return ''
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记
""。预期标记可能包括:""。 SQLSTATE=42601
end if
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "end if" 后面找到异常标记
"END-OF-STATEMENT"。预期标记可能包括:"JOIN "。 SQLSTATE=42601
set v_endpos = locate('|柜员流水号',yjnr)
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "set v_endpos
="。预期标记可能包括:""。 SQLSTATE=42601
if(v_endpos = 0) then return ''
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记
""。预期标记可能包括:""。 SQLSTATE=42601
end if
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "end if" 后面找到异常标记
"END-OF-STATEMENT"。预期标记可能包括:"JOIN "。 SQLSTATE=42601
set v_startpos = v_startpos + 6
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N 在 "BEGIN-OF-STATEMENT" 后面找到异常标记 "set v_startpos
文章评论
本文讨论了一段在DB2命令编辑器中无法正常运行的CREATE FUNCTION语句,该语句在尝试声明变量并进行字符串处理时遇到错误。错误提示表明命令被当作SQL语句处理,但格式不正确。错误主要集中在DECLARE语句和变量类型声明上,如REAL类型的声明不被接受。
1万+

被折叠的 条评论
为什么被折叠?



