DB2 带update,insert的Function函数 cloud

DB2 的自定义函数,默认不允许修改表数据,有INSERT UPDATE DELETE之类的语句则会报错:

The "MODIFIES SQL DATA" clause has not been specified in the CREATE FUNCTION statement for LANGUAGE SQL function "UMP.SEQ" but an examination of the function body reveals that it should be specified.. SQLCODE=-374, SQLSTATE=428C2, DRIVER=3.63.108

如果需要修改表数据,则需要增加 MODIFIES SQL DATA 的修饰符,并且返回类型必须是TABLE,否则会报错:

An SQL TABLE function must return a table result.. SQLCODE=-20120, SQLSTATE=428F1, DRIVER=3.63.108

完整示例:

CREATE FUNCTION seq(seq_name char (20)) RETURNS TABLE(col bigint) MODIFIES SQL DATA
BEGIN ATOMIC
      UPDATE seq SET val=val+1 WHERE NAME=seq_name;
      RETURN (SELECT val FROM seq WHERE NAME=seq_name);
END

Android模拟器不能上网的问题之解决方法 cloudy

Android模拟器默认的地址是10.0.2.3,默认的DNS也是10.0.2.3,但是一般电脑的IP都是192.168.*.*之类的,不在同一个网段。

所以就会出现电脑可以上网但是模拟器不能上网的情况。其实设置方法很简单,只要把模拟器的默认DNS设置成电脑的DNS地址即可。

以下步骤在命令提示符操作:

第一步:cd F:\Android\android-sdk\tools
第二步:emulator @Android_2.1   (其中为Android_2.1你的模拟器名称)
第三步:cd F:\Android\android-sdk\platform-tools
第四步:adb shell    (进入模拟器的linux系统)
第五步:#getprop    (getprop会列出系统当前的各项属性)
在结果里可以看到:
...

在CentOS中安装中文字体 cloudy

1、先从你本机 C:\Windows\Fonts 拷贝或者网络上下载你想要安装的字体文件(*.ttf文件)/usr/share/fonts/chinese/TrueType 目录下(如果系统中没有此目录,则自行mkdir创建,亦可重命名为自己喜欢的文件夹名)

2、修改字体文件的权限,使root用户以外的用户也可以使用

# cd /usr/share/fonts/chinese/TrueType
# chmod 755 *.ttf

3、建立字体缓存

# mkfontscale (如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale
# mkfontdir
# fc-cache -fv (如果提示 fc-cache: command not found,则需要安装# yum install fontconfig

4、重启计算机
# reboot

jQuery ajax 返回json数据格式的问题 suny

 今天在使用如下代码的时候,

   javascript代码
  1. $.get("/ajax", {"ran":Math.random(),"act":act,"id":id}, function(d) {  
  2.         alert(d.ret); 
  3.     },"json"); 

返回的数据是:{ret:0} ,发现无法直接把返回的数据转换为 json 对象,需要使用

var d = eval("("+data+")");  转换一下对象才可以。

...

Nginx fastCGI 模式PHP页面显示空白 suny

 今天帮朋友配置Nginx+PHP环境时,启动后访问php显示空白页面,经过搜索得知 fastcgi_params 文件(部分版本是fastcgi.conf,主要看 nginx.conf 的include路径),配置文件缺少一行:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

--------------------以下内容来自网络--------------------

...

mysql 安装常见问题 suny

 今天在CentOS下安装mysql碰见几个问题,发出来共享一下:

1、# mysql 命令报错:mysql: command not found
原因是系统找不到mysql的路径,即没有配置环境变量:

# vi /etc/profile

在 pathmunge /usr/local/sbin 下面新增一行:
pathmunge /usr/local/mysql/bin

蓝色字体是你的mysql安装路径。然后保存退出,使其立即生效:

方法1:# source /etc/profile
方法2:# . /etc/profile (注意: . 和 /etc/profile 有空格)

2、启动MySQL报错:Starting MySQL.Manager of pid-file quit without updating fi[FAILED]
查看数据库目录下的err文件内容有如下错误:
File './mysql-bin.index' not found (Errcode: 13)

其实当前目录mysql-bin.index是存在的,但是报错是因为没有写入权限。解决方法:

返回 data 的上一层目录,然后赋予写入权限:
...

Update from 子查询更新 suny

在更新表数据的时候,我们时常需要把另外一个表的关联值的数据更新到当前表,此时就需要用到子查询了:

MS SQL Server的写法:

update child set parent_name =p.name from child c,parent p where c.parent_id=p.id
或者
update child set parent_name =(select name from parent p where p.id=parent_id)

但是MySQL执行如上语句则会报错:
Error Code: 1093. You can´t specify target table ´xxx´ for update in FROM clause

MySQL不支持子查询更新,MySQL我们应该这样写:

update child c inner join parent p on p.id=c.parent_id set c.parent_name=p.name;

CentOS环境下把 Nginx 从0.8.54平滑升级至1.0.6 suny

      使用Nginx很久了,一直没有更新和升级,最近爆出低版本的nginx有安全漏洞,虽然当前版本没有受影响,但是本着追求新版和稳定的精神,今天把nginx顺利升级到了最新的1.0.6稳定版。

升级步骤:

1、下载安装包:# wget http://nginx.org/download/nginx-1.0.6.tar.gz

2、解压文件:# tar xzvf nginx-1.0.6.tar.gz

3、查看原版本的安装配置:# /usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/0.8.54
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
nginx: TLS SNI support disabled
nginx: configure arguments: --with-http_stub_status_module --with-http_ssl_module
拷贝你的红色字体的安装配置参数

4、安装配置:# ./configure --with-http_stub_status_module --with-http_ssl_module

5、然后make但是不要make install:# make

6、编译完,在objs目录下有一个nginx执行文件,备份下原来老的nginx文件:
...

myBatis 使用Select top 动态参数出现“´@P0´ 附近有语法错误”的解决 cloudy

今天在使用myBatis使用 select top #{num} * from tableName... 传递动态参数的时候会无法执行SQL语句,报错:'@P0'附近有语法错误

最后寻得解决方法应该为:select top ${num} * from tableName...

iBatis2对应语法是:#num# 和 $num$。

具体解释如下:(转自:wangkuoguang的“成长”空间)

1、#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错。
2、$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了。
3、#方式能够很大程度防止sql注入。
4、$方式无法方式sql注入。
5、$方式一般用于传入数据库对象,例如传入表名。
6、一般能用#的就别用$。


...

httpClient4.x中,MultipartEntity中附加中文信息时的乱码解决 cloud

今天在开发腾讯微博应用的时候,发现部署在Linux上面的jsp无法同时发送图片和汉字,会出现鉴权失败的错误,原因是参数中的中文汉字乱码了!但是在本地winxp环境使用eclipse调试却可以正常发送!

经过调试,发现是httpClient中的MultipartEntity参数编码出现了异常,修改如下:
MultipartEntity reqEntity = new MultipartEntity();
..........
reqEntity.addPart(param[0], new StringBody(value));
改为
MultipartEntity reqEntity = new MultipartEntity();
...


Total:72123456788 Pages