我有一个使用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运行此过程?
相关分类