值参数的AdoNetCore.AseClient的AseCommand参数和ExecuteNonQuery错误

时间:2019-06-14 21:24:54

标签: c# exception .net-core sybase

我正在针对.net core 2.0测试与Sybase 12.5数据库通信的应用程序。

调用以下存储过程将引发异常(尝试将null插入非null列):

IF OBJECT_ID ('STRO.FAKE_VALID_SINISTER') IS NOT NULL
  DROP PROCEDURE STRO.FAKE_VALID_SINISTER
GO

CREATE PROCEDURE STRO.FAKE_VALID_SINISTER (
  @idPV INT,
  @nroPol NUMERIC(9),
  @codBranch NUMERIC(3),
  @codPrefix NUMERIC(2)
)
AS
BEGIN
SET NOCOUNT ON
  DECLARE
    @cant_dias_stro NUMERIC(4,0),
    @fec_emi SMALLDATETIME,
    @sn_cancelacion si_no,
    @prima_cob NUMERIC(18,2),
    @prima_pol NUMERIC(18,2),
    @facultative si_no

  --1 PROVOCATE EXCEPTION null value
  INSERT INTO tparametro VALUES(1, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

  --FIN
  SELECT @cant_dias_stro AS cant_dias_stro, @fec_emi AS fec_emi, @sn_cancelacion AS sn_cancelacion, @prima_cob AS prima_cob, @facultative AS facultative
END
GO

我正在使用的数据库驱动程序是AdoNetCore.AseClient0.14.0

当我调用存储过程时,像这样传递参数,我得到了预期的AseException

command.Parameters.Add(new AseParameter("@idPV", 5));
command.Parameters.Add(new AseParameter("@nroPol", 99));
command.Parameters.Add(new AseParameter("@codBranch", 1));
command.Parameters.Add(new AseParameter("@codPrefix", 3));

但是,当我调用存储过程并传递这样的参数时,我没有得到预期的AseException,而是提交了事务:

int a = 5;long b = 99;int c = 1; int d = 3;

command.Parameters.Add(new AseParameter("@idPV", a));
command.Parameters.Add(new AseParameter("@nroPol", b));
command.Parameters.Add(new AseParameter("@codBranch", c));
command.Parameters.Add(new AseParameter("@codPrefix", d));

有关如何解决此问题的任何想法? 驱动程序有问题吗?

0 个答案:

没有答案