回答

收藏

如何在SQL查询中使用Oracle关联数组

技术问答 技术问答 94 人阅读 | 0 人回复 | 2023-09-13

ODP.Net从参数中提供相关数组C#传递到Oracle存储过程的能力。除非你试图sql使用相关数组中包含的数据进行查询,否则是一个很好的功能。2 M1 c1 [& A- t  s3 x1 W+ a& D
这样做的原因是需要上下文切换-SQL语句需要SQL类型和这样传递给PL / SQL实际上将相关数组定义为PL / SQL类型。我相信在PL /- d) y8 D* V8 k: e! O" S% Y+ j, k3 X
SQL任何类型的包/过程/函数都是定义的PL /
% ^# L. C0 [5 @) QSQL在这些对象之外创建的类型是SQL类型(如果你能提供更多的解释,请这样做,但这不是我们的目标。问题)。6 @9 G) M" L. M6 ~0 U; m
所以,问题是,会PL / SQL将相关数组参数转换为过程中可用的参数sql句子中的方法是什么:3 q4 t- y: C# i4 p7 u
OPEN refCursor FORSELECT T.*FROM   SOME_TABLE T,      ( SELECT COLUMN_VALUE V         FROM   TABLE( associativeArray )       ) T2WHERE  T.NAME = T2.V;出于这个例子的目的,6 m+ }* y& N: e: L3 e6 O
associativeArray”是由PLS_INTEGER索引的varchar简单表2(200)。C#中,associativeArry参数用string7 S) S0 m) D  [6 t) S7 _
[]填充。8 i: |- N; B; E* ^  n) S
除使用相关数组外,还可以随意讨论其他方法,但提前知道这些解决方案将不被接受。然而,我仍然对看到其他选择感兴趣。# [2 T1 r2 A: ~$ A8 O
                                                                " o9 C8 v9 s7 o& A
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则