arthur1980 发表于 2008-06-11 19:08

存储过程select语句in条件中如何设变量

define ls_in varchar(255);

let ls_in = "'a','b'";
select sum(amount) from tab1
where col1 in (ls_in);


这样写ls_in不行,请问该怎么写?我试了很多种方法都不可以。

ivhb 发表于 2008-06-11 21:28

语法层面的,是不可能的。
in ('a,b')
就是说有个完整的字串'a,b'来匹配。
而不是
in ('a', 'b')
你相当于改变了他的语法,这个是不可能实现的。
当然,这个是可以的
in (:var_a, :var_b)

xxyyy 发表于 2008-06-11 21:51

这属于动态sql语句,在informix 11.5中才被支持

liaosnet 发表于 2008-06-11 22:37

回复 #3 xxyyy 的帖子

SPL里也支持的....

日月如尧 发表于 2008-06-13 17:42

同意2 楼的。
in ()里只用一个变量,不符合语法。
应该换一个思路

arthur1980 发表于 2008-06-14 13:33

换了方法,把数值计算放到每一个循环里了。存储过程还不是一般难用
页: [1]
查看完整版本: 存储过程select语句in条件中如何设变量