db2执行命令没反应_为什么下面这段程序不能在DB2命令编辑器中运行?

本文讨论了一段在DB2命令编辑器中无法正常运行的CREATE FUNCTION语句,该语句在尝试声明变量并进行字符串处理时遇到错误。错误提示表明命令被当作SQL语句处理,但格式不正确。错误主要集中在DECLARE语句和变量类型声明上,如REAL类型的声明不被接受。
摘要由CSDN通过智能技术生成

当前位置:我的异常网» 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

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值