【发布时间】:2021-11-08 12:28:27
【问题描述】:
我得到了一个很大的表 My_Table 和一个用户定义的集合 Picture_Arr 作为输入,通常有 5-10 行声明为:
TYPE Picture_Rec IS RECORD (
seq_no NUMBER,
task_seq NUMBER);
TYPE Picture_Arr IS TABLE OF Picture_Rec;
在 MS SQL 中,我通常会写如下内容:
DECLARE @Picture_Arr TABLE (seq_no INT, task_seq INT)
SELECT M.*
FROM My_Table M
INNER JOIN @Picture_Arr A
ON M.seq_no = A.seq_no AND M.task_seq = A.task_seq
但我不知道如何在 Oracle 中重写相同的代码,因为 Picture_Arr 不是表格。正如一些教程所述,我本可以遍历 My_Table 并比较键,但它在 Oracle 中是否有效,或者有其他方法吗?
【问题讨论】:
-
请描述一下如何获取
Picture_Arr类型变量的数据? T-SQL代码sn -p没有变量初始化,所以不清楚应该join什么,如何准备join的数据。 -
您真正想要实现的目标是什么?如果你知道这些值并且你可以用它们填充一个数组,为什么你不能用相关的
IN子句(select * from my_table where (seq_no, task_seq) in ((1,2), (3,4), (5,6)))编写一个查询? -
发生了很多事情,所以我将所有内容都简化为简单的
select声明。Picture_Arr的数据填充在其他地方,实际上在生成的代码中声明了类型。我只剩下返回另一个集合的函数体模板。