У меня возникла ошибка и ошибка при попытке вызвать хранимую процедуру Sybase, которая указывает нулевой параметр.Невозможно отправить параметр null в хранимую процедуру Sybase с использованием собственного ADO-клиента .Net ASE
Я написал песочницу (см код сильфон)
Когда я запускаю код, я получаю «неподдерживаемый тип параметра» исключение. Единственный способ, которым работает код: удалить нулевой параметр (который по умолчанию имеет значение null BTW), но это не вариант для меня, потому что код содержится внутри кларированной ORM.
Я использую Sybase.AdoNet2.AseClient v 1.15.346.0. Версия базы данных sybase 12.5.4 Я был бы рад, если бы вы могли мне помочь. Благодарности & С уважением, Бернабе
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sybase.Data.AseClient;
namespace SybaseSPParamNulo
{
class Program
{
static void Main(string[] args)
{
string cnxString = @"Data Source=192.168.0.8;Port=5000;Database=PiaSigna;Uid=sa;Pwd=123456;";
Sybase.Data.AseClient.AseConnection cnx = new AseConnection(cnxString);
AseCommand cmd = new AseCommand("sp_sectores_por_sucursal");
cmd.CommandType = System.Data.CommandType.StoredProcedure;
AseParameter p = new AseParameter("@suc", DBNull.Value);
cmd.Parameters.Add(p);
cnx.Open();
cmd.Connection = cnx;
cmd.ExecuteReader();
cnx.Close();
}
}
}
The following is the SP
CREATE procedure [dbo].[sp_sectores_por_sucursal]
@suc numeric(4)=NULL
AS
select s.CODSEC,DESC_SEC from GYF_SECTORES s
join SUCURSAL_SECTORES ss on ss.CODSEC=s.CODSEC
where ([email protected])
IF @@ERROR <> 0
RETURN 1
RETURN 0
SP код выглядит правильно - http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc32300_1251/html/sqlug/sqlug605.htm –
Да, как вопрос факт, если выполнить процедуру из клиентской программы, такой как «Клиент сервера ASE», я не получаю никаких ошибок. Я забыл упомянуть, что я нашел ту же проблему с параметризованными запросами. Может быть, проблема в клиентской библиотеке, которую я использую? –