﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;p align="left" style="font-family:华文行楷; font-size:20px; color:#FF0000"&gt;心砚手记&lt;/p&gt;-随笔分类-数据库</title><link>http://www.blogjava.net/zqbchina/category/23800.html</link><description>&lt;p align="right" style="font-family:华文新魏; font-size:14px; color:#660000"&gt;技术知识是基础，技术精通是目标，体系思想是境界&lt;/p&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 01 Apr 2008 06:31:21 GMT</lastBuildDate><pubDate>Tue, 01 Apr 2008 06:31:21 GMT</pubDate><ttl>60</ttl><item><title>DB2命令行处理器中的语句执行问题</title><link>http://www.blogjava.net/zqbchina/archive/2008/04/01/190064.html</link><dc:creator>心砚</dc:creator><author>心砚</author><pubDate>Tue, 01 Apr 2008 05:45:00 GMT</pubDate><guid>http://www.blogjava.net/zqbchina/archive/2008/04/01/190064.html</guid><wfw:comment>http://www.blogjava.net/zqbchina/comments/190064.html</wfw:comment><comments>http://www.blogjava.net/zqbchina/archive/2008/04/01/190064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqbchina/comments/commentRss/190064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqbchina/services/trackbacks/190064.html</trackback:ping><description><![CDATA[在DB2中创建UDF时,将写好的sql放在命令行处理器中执行,报错.<br />提示: <font style="BACKGROUND-COLOR: #0000ff">命令被当作 SQL语句来处理，因为它不是有效的“命令行处理器”命令..... <br /><font style="BACKGROUND-COLOR: #ffffff">解决办法: 不用命令行处理器(当然也不用Quest Contral之类的第三方工具,主要是因为服务器的原因) , 编写一个批处理: db2cmd -c db2 -z log.out -td@   -f mysql.clp . 其中, mysql.clp中的sql要做部分改动,主要是因为结束符的问题, 如: <br /><br />CREATE FUNCTION F_YEAR_ALL_DAYS<br /> (THE_DAY VARCHAR(10)<br /> ) <br />  RETURNS TABLE<br />   (ROWID INTEGER,<br />    DETAIL_DATE DATE<br />   )<br />  SPECIFIC SQL071218171441700<br />  LANGUAGE SQL<br />  NOT DETERMINISTIC<br />  READS SQL DATA<br />  STATIC DISPATCH<br />  CALLED ON NULL INPUT<br />  EXTERNAL ACTION<br />  INHERIT SPECIAL REGISTERS<br />  p1:begin atomic<br />    DECLARE v_first_day VARCHAR(10);<br />    SET v_first_day = substr(THE_DAY,1,4)||'-01'||'-01';<br />    RETURN<br />      select T.rowid,T.detail_date<br />        from (<br />          select a.rowid,a.detail_date<br />            from (<br />              select ROW_NUMBER() over() as rowid, (DATE(v_first_day) + ( <br />                  ROW_NUMBER() over() - 1) day ) as detail_date<br />                from table_a) a<br />            where year(a.detail_date) = year(v_first_day)) as T;<br />  end p1@<br />这里,函数体中的分号结束符并没有改动,只是在函数体外围定义的地方加了一个标志符p1,并用@代替分号结束符.<br /></font><br /></font><img src ="http://www.blogjava.net/zqbchina/aggbug/190064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqbchina/" target="_blank">心砚</a> 2008-04-01 13:45 <a href="http://www.blogjava.net/zqbchina/archive/2008/04/01/190064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>