我正在针对.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.AseClient
版0.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));
有关如何解决此问题的任何想法? 驱动程序有问题吗?