C# 在C中调用存储Oracle过程
所以我想用C调用一个存储过程,但我不知道确切的语法,而且我也不知道它是否需要参数,因为这个过程会自动获取参数并赋值,所以我应该传递什么参数给它 下面是存储过程C# 在C中调用存储Oracle过程,c#,oracle,stored-procedures,calling-convention,C#,Oracle,Stored Procedures,Calling Convention,所以我想用C调用一个存储过程,但我不知道确切的语法,而且我也不知道它是否需要参数,因为这个过程会自动获取参数并赋值,所以我应该传递什么参数给它 下面是存储过程 create or replace procedure p_delete_tt_duration_10min is new_status varchar2(50); status varchar2(20); p_tkt varchar2(50); cursor prt_cursor is SELECT a.id,
create or replace procedure p_delete_tt_duration_10min is
new_status varchar2(50);
status varchar2(20);
p_tkt varchar2(50);
cursor prt_cursor is
SELECT a.id,
a.ticketno,
to_number(a.outagedurationmin),
a.fault_occur_time,
a.auto_clear_time
FROM pmp_bpm_troubleticket a
WHERE a.fault_id IS NOT NULL
AND a.fault_occur_time IS NOT NULL
--and a.generatedby = 'Automatic'
AND ((a.tt_type IN ('Cell/Sector Down',
'3G Cell Down Alarm',
'4G Cell Down Alarm') AND
to_number(a.outagedurationmin) < 18) OR
(a.tt_type IN ('Site Down',
'NodeB Down Alarm',
'ENodeB Down Alarm',
'TRX/Equipment Faulty',
'Processing Problem',
'GPRS Down',
'Media disconnect',
'Hardware Fault',
'Link Down') and
to_number(a.outagedurationmin) < 10))
AND a.fault_occur_time >= '2017-04-01 00:00:00' order by to_number(a.outagedurationmin) desc;
begin
for prt_temp in prt_cursor loop
p_tkt := prt_temp.id;
delete from wf_assignment t
where t.assignment_id in
(select id from wf_dai_ban_task a where a.primary_key = p_tkt);
commit;
delete from wf_dai_ban_task a where a.primary_key = p_tkt;
commit;
delete from wf_yi_ban_task a where a.primary_key = p_tkt;
commit;
delete from pmp_bpm_task_expand_info a where a.primary_key = p_tkt;
commit;
delete from PMP_BPM_CC_LIST a where a.primarykey = p_tkt;
commit;
delete FROM PMP_BPM_TROUBLETICKET_PROCESS D
WHERE D.ACTIVITYID IN (SELECT W.ID
FROM PMP_BPM_TROUBLETICKET_ACTIVITY W
WHERE W.PRIMARYKEY = p_tkt);
commit;
delete from PMP_BPM_TROUBLETICKET_ACTIVITY a
where a.primarykey = p_tkt;
commit;
delete from PMP_BPM_TROUBLETICKET a where a.id = p_tkt;
commit;
end loop;
end;
提前谢谢。您有没有检查过,这是非常基本的:
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
OracleCommand cmd = new OracleCommand("BEGIN p_delete_tt_duration_10min; END;", con);
// Auto-commit changes
cmd.ExecuteNonQuery();
// Clean up
cmd.Dispose();
con.Dispose();
你也可以写
OracleCommand cmd = new OracleCommand("p_delete_tt_duration_10min", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
为什么每次删除后都要提交?大多数删除命令最好通过外键约束来完成。循环实际上也不是必需的。您的过程不接受任何参数@WernfriedDomscheit这不是我的过程,我只想在中调用这个预定义的过程C@WernfriedDomscheit是的,那个么我该怎么称呼它呢?谢谢你们的帮助,是的,我搜索了很多,但我对参数的事情感到困惑,现在它工作了。