raidenlee 发表于 2007-10-18 09:03

高手帮忙看一下,db2的sql语句infromix下为什么不能执行?

急啊!!!本人在db2下使用这条语句:select count(*) from (select distinct aaa, bbb from table where ccc='1' and ddd='2') as A;执行成功,但是同样的语句在informix下却会报-201的语法错误,请问这条语句在informix下应该如何执行,请高手指点,谢谢!

[ 本帖最后由 raidenlee 于 2007-10-18 09:06 编辑 ]

raidenlee 发表于 2007-10-18 09:19

在informix下执行会报以下错误:
201: A syntax error has occurred.
Error in line 1
Near character position 24

liaosnet 发表于 2007-10-18 09:34

原帖由 raidenlee 于 2007-10-18 09:03 发表 http://bbs.chinaunix.net/images/common/back.gif
急啊!!!本人在db2下使用这条语句:select count(*) from (select distinct aaa, bbb from table where ccc='1' and ddd='2') as A;执行成功,但是同样的语句在informix下却会报-201的语法错误,请问这条语句 ...

在informix要分成两步做.
select distinct aaa, bbb from table where ccc='1' and ddd='2' into temp A;
select count(*) from A;

xxyyy 发表于 2007-10-18 09:42

如果你把informix的版本升级到11.10版,就支持这个语法了

raidenlee 发表于 2007-10-18 09:51

谢谢楼上,但是分两步做的话是不是必须要在一条命令里面执行?不然就找不到temp A了。
那如果在esql里面执行的话,可以写在一起吗?像这样子写可以吗,能找到temp A吗:
EXEC SQL select distinct aaa, bbb from table where ccc='1' and ddd='2' into temp A;
EXEC SQL select count(*) into :iCnt from A;

liaosnet 发表于 2007-10-18 10:10

原帖由 raidenlee 于 2007-10-18 09:51 发表 http://bbs.chinaunix.net/images/common/back.gif
谢谢楼上,但是分两步做的话是不是必须要在一条命令里面执行?不然就找不到temp A了。
那如果在esql里面执行的话,可以写在一起吗?像这样子写可以吗,能找到temp A吗:
EXEC SQL select distinct aaa, bbb f ...

是在一个ses里执行~也应就是说在一个命令里完成
EXEC SQL "select ....; select count(*) from ....;"

raidenlee 发表于 2007-10-18 11:33

谢谢liaosnet ,谢谢各位帮忙。
To liaosnet: 我已经试过,在esql里面可以写在2个EXEC SQL中。
页: [1]
查看完整版本: 高手帮忙看一下,db2的sql语句infromix下为什么不能执行?