我尝试在C#中执行此脚本:
declare
NEW_PAP_OPERATOR_ID number;
cursor cu_records_a_traiter is
select *
from operator_dossier d,
pap_operator_verandering ov,
pap_verandering v
where d.operator_id = ov.operator_id
and v.cr_info = :v_cr_info;
begin
for rec_cu in cu_records_a_traiter loop
/* insert new record */
INSERT INTO BOOD.PAP_OPERATOR
(HOOFD_OF_NEVENACTIVITEIT)
VALUES
(rec_cu.HOOFD_OF_NEVENACTIVITEIT);
SELECT BOOD.SEQ_PAP_OPERATOR_ID.CURRVAL
into NEW_PAP_OPERATOR_ID
FROM dual;
/* update with new record*/
UPDATE Bood.Pap_Operator_Verandering
SET pap_operator_doel_id = NEW_PAP_OPERATOR_ID,
datum_wijziging = Sysdate,
gebruiker_wijziging_id = '-549'
WHERE pap_operator_verandering_id = rec_cu.PAP_OPERATOR_VERANDERING_ID;
end loop;
end;
没有例外,但脚本没有运行。 如果我在没有C#的情况下执行sql脚本,它就可以了。 我认为currval NEW_PAP_OPERATOR_ID存在问题 目前我在c#中没有什么特别之处。
C#代码:
try
{
OracleCommand command = new OracleCommand("myScript", Connection);
command.Parameters.Add("v_cr_info", OracleDbType.VarChar, changeRequest, ParameterDirection.Input);
command.ExecuteNonQuery();
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
finally
{
Connection.Close();
}
答案 0 :(得分:0)
您没有显示PROC参数,也没有指定您的命令是PROC
OracleCommand command = new OracleCommand("myScript", Connection);
command.CommandType = CommandType.StoredProcedure;