plsql中如何实现这种需求?IN相关,数组相关,高分

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:16:50
在写存储工程中有个需求,就是要把 where tableA.colsA IN ('b','c')这种sql中的【'b','c'】用一个变量代替。(select)之类的子查询就不考虑了,效率不行。因为要有很多地方需要改成 where tableA.colsA IN (valueA)。

初步设想声明一个type myArray *** table index is number 什么什么的,记不太清楚了。把‘b’'c' 设置进去

要么就是运行一个select 把‘b’'c' 作为结果集存在某种集合中。

但两种我都不会写。而且也没把握能很好满足我的需求, 我用的是oracl,‘b’‘d’是两个字母。是定值。

各位回答的时候,如果只是自己推测请麻烦说明,
我5月11号上线来收各位高手的答案:)

说个简略版,where条件里面有个条件 valueA IN ('b','c')。 我想把'b','c'用一个变量代替。如何达成。因为以后可能要改成'b','c','e'之类的。为了方便。

很简单,采用动态语句,'b','c'开始用变量赋值即可。

CREATE OR REPLACE PROCEDURE test
IS
iv_choose VARCHAR2(30); --赋值变量
BEGIN
iv_choose := 'b,c';
EXECUTE IMMEDIATE 'select * from dual
where tableA.colsA IN ('||iv_choose ||')';
end;
已上是例子,EXECUTE IMMEDIATE 好像是9i及以上才可以用,817什么的有其他的动态语句用法

你声明一个临时表, 把需要的字段加进去,
然后用select语句吧需要包含在IN 里面的内容用insert 添加到临时表。
这样, 这个临时表相当于一个数据集, 或者一个数组,
你可以简单而且反复的调用里面的数据进行比较!

没什么会不会的,那只是语法的问题,参考一下资料就行了
如果常用到的话,建议写个函数或者存储过程,根据需要吧。

看了半天,没看明白你到底想表达什么,遇到的问题是什么,想得到一个什么样的结果!

不太清楚

额。不懂..