Из «Обработка ошибок PL / SQL» :
NO_DATA_FOUND
Инструкция SELECT INTO не возвращает строк или ваша программа ссылается на удаленный элемент во вложенной таблице или неинициализированный элемент в таблице index-by. Агрегатные функции SQL, такие как AVG и SUM, всегда возвращают значение или ноль. Таким образом, оператор SELECT INTO, который вызывает агрегатную функцию, никогда не вызывает NO_DATA_FOUND. Ожидается, что оператор FETCH в конечном итоге не будет возвращать никаких строк, поэтому, когда это происходит, исключение не возникает.
blockquote>Вы не используете оператор, который вызвал бы исключение
NO_DATA_FOUND
.Может быть, вы можете использовать
SQL%ROWCOUNT
. Из «Выполнение операций SQL из PL / SQL» :Чтобы узнать, на сколько строк влияют операторы DML, вы можете проверить значение
blockquote>SQL%ROWCOUNT
...CREATE OR REPLACE PROCEDURE UPD_JOB (p_job_id jobs.job_id%TYPE, p_jobnew jobs.job_title%TYPE) IS BEGIN UPDATE JOBS SET job_title = p_jobnew WHERE JOB_ID = p_job_id; IF SQL%ROWCOUNT = 0 THEN DBMS_OUTPUT.PUT_LINE('No rows have been updated'); END IF; END; /
Хорошо список всегда пуст для начала, Вы устанавливающий его через myClass.value = new List<...>();
? Также Вы сохранили сериализированные данные и в двоичном файле и в xml форматах, таким образом, можно проверить, что данные на самом деле сохраняются?
Просто примечание также, если Вы используете 2.0 +, Вы не должны реализовывать ISerializable, если Вы не должны управлять абсолютной сериализацией, можно изменить значение на общественную собственность, и это сериализирует на своем собственном.
Править: Следующий случай, кажется, сериализирует и десериализовывает прекрасный для меня, я отправляю, это упаковывает, я неправильно понимаю вопрос в целом.
При игнорировании противного тестового кода надо надеяться, это помогает немногому.
[Serializable]
public class OType
{
public int SomeIdentifier { get; set; }
public string SomeData { get; set; }
public override string ToString()
{
return string.Format("{0}: {1}", SomeIdentifier, SomeData);
}
}
[Serializable]
public class MyClass : ISerializable
{
public List<OType> Value;
public MyClass() { }
public MyClass(SerializationInfo info, StreamingContext context)
{
this.Value = (List<OType>)info.GetValue("value", typeof(List<OType>));
}
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("value", Value, typeof(List<OType>));
}
}
...
var x = new MyClass();
x.Value = new OType[] { new OType { SomeIdentifier = 1, SomeData = "Hello" }, new OType { SomeIdentifier = 2, SomeData = "World" } }.ToList();
var xSerialized = serialize(x);
Console.WriteLine("Serialized object is {0}bytes", xSerialized.Length);
var xDeserialized = deserialize<MyClass>(xSerialized);
Console.WriteLine("{0} {1}", xDeserialized.Value[0], xDeserialized.Value[1]);
Забыл вывод..
Сериализованный объект составляет 754 байта
1: Привет 2:В мире