代码如下:
try
{
//1.1 执行存储过程
List<OracleParameter> list = new List<OracleParameter>();
list.Add(new OracleParameter() { ParameterName = "VAR_OP_XXXX_", Direction = ParameterDirection.Input, Value = dept_code, OracleDbType = OracleDbType.Varchar2 });
list.Add(new OracleParameter() { ParameterName = "VAR_OP_XXXX_", Direction = ParameterDirection.Input, Value = user_code, OracleDbType = OracleDbType.Varchar2 });
list.Add(new OracleParameter() { ParameterName = "RETURNData_", Direction = ParameterDirection.Output, OracleDbType = OracleDbType.Varchar2,Size=50 });
OracleHelper.ExecuteNonQuery("USP_WAITING_XXXX", list.ToArray());
object t = list.Where(x => x.ParameterName == "RETURNData_").FirstOrDefault().Value;
string queryValue = (((OracleString)t).Value).ToString(); }
catch (Exception ex)
{
LogHelper.Error("SetTaskWaitingByUserDAL执行异常" + ex.ToString());
return -1;
}
最后采用在存储过程中将数据插入到临时表的方法,RETURNData_输出值返回的是一个随机生成的索引主键的方法。
--1.22 获取一个sys_guid
select sys_guid() into strRandom from dual;
--1.23.1 由于oracle的long类型 在C#中接收可能会出问题 需要转换为varchar类型 转换过程中数据可能丢失 所以直接写入到数据表中
tmpArry:=FN_SPLIT(strtmpLong,',');
v_tmpArryLen := tmpArry.COUNT;
--1.23.2 循环 开始
FOR i IN 1 .. v_tmpArryLen LOOP
dbms_output.put_line('1.23.2 数组中 '||i||' 数据='||tmpArry(i));
tmpArry2:=FN_SPLIT(tmpArry(i),'|');
strtmp1:=tmpArry2(1);
strtmp2:=tmpArry2(2);
SQL_:='insert into c_inwaiting_XXXX(tmp_id,tmp_business_type,tmp_business_id,tmp_keyword) values(SEQ_C_INWAITING_XXXX_ID.Nextval,
'''||strtmp1||''','''||strtmp2||''','''||strRandom||''') ';
execute immediate SQL_ ;
COMMIT;
END LOOP;
--1.24 返回一个 sys_guid
RETURNData_:=strRandom;