Parameters 无法使用.Net ASE本机ADO客户端向Sybase存储过程发送null参数

Parameters 无法使用.Net ASE本机ADO客户端向Sybase存储过程发送null参数,parameters,ado.net,sybase,dbnull,ase,Parameters,Ado.net,Sybase,Dbnull,Ase,当我试图调用提供空参数的Sybase存储过程时,出现了错误 我写了一个沙盒(见下面的代码) 运行代码时,会出现“不支持的参数类型”异常。 代码工作的唯一方法是删除null参数(默认为null BTW),但这不是我的选项,因为代码包含在集群ORM中 我正在使用Sybase.AdoNet2.aseclientv1.15.346.0。sybase数据库版本为12.5.4 如果你能帮助我,我会很高兴的。 谢谢和问候, 伯纳贝 使用系统; 使用System.Collections.Generic; 使用S

当我试图调用提供空参数的Sybase存储过程时,出现了错误

我写了一个沙盒(见下面的代码)

运行代码时,会出现“不支持的参数类型”异常。 代码工作的唯一方法是删除null参数(默认为null BTW),但这不是我的选项,因为代码包含在集群ORM中

我正在使用Sybase.AdoNet2.aseclientv1.15.346.0。sybase数据库版本为12.5.4 如果你能帮助我,我会很高兴的。 谢谢和问候, 伯纳贝

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Sybase.Data.AseClient;
名称空间SybasesParamNulo
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串cnxString=@“数据源=192.168.0.8;端口=5000;数据库=PiaSigna;Uid=sa;Pwd=123456;”;
Sybase.Data.AseClient.AseConnection cnx=新的AseConnection(cnxString);
ASECOMAND cmd=新ASECOMAND(“sp_sectores_por_sucursal”);
cmd.CommandType=System.Data.CommandType.StoredProcess;
AseParameter p=新的AseParameter(“@suc”,DBNull.Value);
cmd.Parameters.Add(p);
cnx.Open();
cmd.Connection=cnx;
cmd.ExecuteReader();
cnx.Close();
}
}
} 
以下是SP
创建过程[dbo]。[sp_sectores_por_sucursal]
@suc numeric(4)=空
作为
从GYF_扇区中选择s.CODSEC、DESC_SEC
在ss.CODSEC=s.CODSEC上加入SUCURSAL_SECTORES ss
其中(NNSUCURSAL_ID=@suc)
如果@错误0
返回1
返回0

是的,可能是驱动程序问题,连接后尝试
将ansinull设置为off
。我们在delphi/sybase中遇到过类似问题,我喜欢使用下面的代码发布

procedure TForm.TestConnectionAfterConnect(Sender: TObject);
begin
   TestConnection.ExecSQL('set ansinull off',[]);
end;

SP代码看起来正确-是的,事实上,如果从“ASE服务器客户端”之类的客户端程序执行该过程,我不会得到任何错误。我忘了提到我在参数化查询中发现了同样的问题。这可能是我使用的客户端库的问题吗?
procedure TForm.TestConnectionAfterConnect(Sender: TObject);
begin
   TestConnection.ExecSQL('set ansinull off',[]);
end;