У меня есть sproc 'up_selfassessform_view', который имеет следующие параметры:
in ai_eqidentkey SYSKEY
in ai_acidentkey SYSKEY
out as_eqcomments TEXT_STRING
out as_acexplanation TEXT_STRING
- которые являются объектами домена - SYSKEY является 'целым числом', а TEXT_STRING является 'длинным varchar'.
Я могу вызвать sproc штраф из iSQL, используя следующий код:
create variable @eqcomments TEXT_STRING;
create variable @acexamples TEXT_STRING;
call up_selfassessform_view (75000146, 3, @eqcomments, @acexamples);
select @eqcomments, @acexamples;
- который возвращает правильные значения из БД (поэтому я знаю, что SPROC хорош).
Я настроил параметр out в ADO.NET следующим образом (который до сих пор работал для 'integer', 'timestamp', 'varchar (255)' и т. Д.):
SAParameter as_acexplanation = cmd.CreateParameter();
as_acexplanation.Direction = ParameterDirection.Output;
as_acexplanation.ParameterName = "as_acexplanation";
as_acexplanation.SADbType = SADbType.LongVarchar;
cmd.Parameters.Add(as_acexplanation);
Когда я запускаю следующий код:
SADataReader reader = cmd.ExecuteReader();
Я получаю следующую ошибку:
Parameter[2]: the Size property has an invalid size of 0.
Что (я полагаю) имеет смысл ...
Но дело в том, что я не знаю размера поля (это просто "длинный varchar", он не имеет заданной длины - в отличие от varchar (XXX)).
Во всяком случае, просто для удовольствия, я добавляю следующее:
as_acexplanation.Size = 1000;
и вышеуказанная ошибка исчезает, но теперь, когда я звоню:
as_acexplanation.Value
я получаю строку длины = 1000, которая равна '\ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 .. . '(\ 0 повторяется 1000 раз).
Так что я действительно застрял ... Любая помощь, которая будет очень полезна.
Ура! ;)
Тод Т.