oracle中调用存储过程的值作为条件过滤,改怎么写呢

帆软里面单独调用存储过程,可以写call语句调用。现在需要讲存储过程查出来的结果作为条件过滤数据。应该怎么写呢

大概逻辑是这样: select  * from 主表 where 主表-字段 in (select 字段1 from 存储过程),

SQLserver里面好像可以直接用select调用存储过程,但oracle 好像只能用call语句,后面我写的语句都报错了。

FineReport hotfog119 发布于 2021-3-11 17:17 (编辑于 2021-3-11 17:35)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
烟尘Lv6高级互助
发布于2021-3-11 17:24(编辑于 2021-3-15 08:40)

过程改成表值函数返回列表

--DECLARE--B A;select *from table(cast(B as A))create or replace type CTest as object(tid    varchar2(6),tname  varchar2(20))/create or replace type tabCtest is table of cTest/create or replace function myTest return  tabctestis  Result tabctest := tabctest();begin  Result := tabctest();  Result.extend;  Result(Result.count) := CTEST(NULL,NULL);  Result(Result.count).tid := '1';  Result(Result.count).tname := 'name1';    Result.extend;  Result(Result.count) := CTEST(NULL,NULL);  Result(Result.count).tid := '2';  Result(Result.count).tname := 'name2';    return(Result);end myTest;/select *from table(cast(myTest as tabctest))

  • hotfog119 hotfog119(提问者) 大佬,太言简意赅了吧。小弟理解不能啊
    2021-03-12 22:33 
  • 烟尘 烟尘 回复 hotfog119(提问者) 存储过程写成函数返回表
    2021-03-15 08:41 
  • hotfog119 hotfog119(提问者) 还是不怎么会写,因为急用所有用存储过程+JOINARRAY(value(\'ds1\',1),\"\',\'\") 的方式实现取数,但遇到帆软限制:列表中最大表达式数为1000,又不能用了
    2021-03-15 14:14 
  • 2关注人数
  • 547浏览人数
  • 最后回答于:2021-3-15 08:40
    请选择关闭问题的原因
    确定 取消
    返回顶部