互联网服务数据库

大家好,新手问一个简单的问题,请大家帮忙,谢谢

我写了一个函数,如下:CREATE  FUNCTION GETDBDATE (p_dat varchar(10), p_pd int)  returns varchar(10)begin atomic declare  mm varchar(2); declare  yy varchar(4); declare  dd varchar(2); declare  d...显示全部
我写了一个函数,如下:
CREATE  FUNCTION GETDBDATE (p_dat varchar(10), p_pd int)
  returns varchar(10)
begin atomic
declare  mm varchar(2);
declare  yy varchar(4);
declare  dd varchar(2);
declare  dt varchar(8);
--日期
  select substr(p_dat, 9, 2)   into dd from sysibm.sysdummy1;
  --月份
  select substr(p_dat, 5, 2)   into mm from sysibm.sysdummy1;
  --年份
  select substr(p_dat, 1, 4)   into yy from sysibm.sysdummy1;
return '222';
end;
为什么会报错:
DB21034E  该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N  在 "(p_dat, 9, 2)   into" 后面找到异常标记
"dd"。预期标记可能包括:""。  LINE NUMBER=10.  SQLSTATE=42601
SQL0104N  在 "(p_dat, 9, 2)   into" 后面找到异常标记 "dd"。预期标记可能包括:"                                       "。
解释:
在文本 "<文本>" 后面的指定标记处检测到 SQL
语句中或 SYSPROC.ADMIN_CMD
过程的输入命令字符串中的语法错误。 "<文本>"
字段指示无效标记前面的 SQL 语句中或 SYSPROC.ADMIN_CMD
过程的输入命令字符串的 20 个字符。
作为帮助,在 SQLCA 的 SQLERRM
字段中,提供了有效标记的部分列表作为
"<标记列表>"。此列表假设语句到该位置为止
是正确的。
无法处理该语句。
用户响应:
在指定的标记区域内检查并更正语句。
sqlcode :  -104
sqlstate :  42601
请高手帮忙指点一下,谢谢了收起
参与8

查看其它 7 个回答richardmark的回答

richardmarkrichardmark系统架构师文思海辉
又是在CLP下执行的吧  用工具  或者去掉回车符

转载请注明源自www.DB2China.net,请保留版权.
原文地址:http://www.db2china.net/club/thread-7225-1-1.html
IT咨询服务 · 2010-03-11
浏览877

回答者

richardmark
系统架构师文思海辉
擅长领域: 中间件

richardmark 最近回答过的问题

回答状态

  • 发布时间:2010-03-11
  • 关注会员:0 人
  • 回答浏览:877
  • X社区推广