猿问

在C#中使用Dapper将数据发送到RECORD类型的PL / SQL脚本变量中如何更好

我有一个使用3个RECORD类型变量作为参数的PL / SQL过程,我必须填充我的数据(来自c#应用程序)才能执行过程。


首先,我尝试通过c#使用此记录构建相同的结构,并通过Dapper作为参数传递,但是它不起作用,因为dapper仅适用于标量数据类型。


然后,我尝试将数据作为数组传递并在过程中映射它们,但是RECORD类型不能接受数据集,因为a.NAME := ('aaaaaa','sdasd');它只能以这种方式工作:


a.NAME(1) := 'aaaaaa';

a.NAME(2) := 'sdasd';

我现在唯一想到的就是在过程文本中生成这样的字符串,但是我觉得应该有更好的方法。怎么了?


PS我毕竟无法更改需要运行的脚本,因此我无法更改其接受的数据类型。


更新:为了简化起见,我决定举一个例子:


我们有2种自定义类型


TYPE A_REC IS RECORD (NAME dbms_sql.Varchar2_Table);

TYPE B_REC IS RECORD (NAME dbms_sql.Varchar2_Table

                         , ID dbms_sql.Number_Table);

和一个程序,可能会使用类似


declare

a c_pck.a_rec;

b c_pck.b_rec;

begin


a.NAME(1) := 'aaaaa';

b.NAME(1) := 'sssss';

b.NAME(2) := 'ddddd';

b.ID(1) := 111;

b.ID(2) := 222;



c_pck.pr(a => a, b => b);

end;

如何通过Dapper运行此过程?


泛舟湖上清波郎朗
浏览 208回答 2
2回答
随时随地看视频慕课网APP
我要回答