diff options
Diffstat (limited to 'slicer/db/sqlSelectDeserializer.cpp')
-rw-r--r-- | slicer/db/sqlSelectDeserializer.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/slicer/db/sqlSelectDeserializer.cpp b/slicer/db/sqlSelectDeserializer.cpp index 5c46e11..a7dd575 100644 --- a/slicer/db/sqlSelectDeserializer.cpp +++ b/slicer/db/sqlSelectDeserializer.cpp @@ -40,12 +40,15 @@ namespace Slicer { void SqlSelectDeserializer::DeserializeSimple(Slicer::ModelPartPtr mp) { - auto fmp = mp->GetAnonChild(); if (!cmd.fetch()) { - throw NoRowsReturned(); + if (!mp->IsOptional()) { + throw NoRowsReturned(); + } + return; } SqlSourcePtr h = new SqlSource(cmd[0]); if (!h->isNull()) { + auto fmp = mp->GetAnonChild(); fmp->Create(); fmp->SetValue(h); fmp->Complete(); @@ -68,7 +71,10 @@ namespace Slicer { SqlSelectDeserializer::DeserializeObject(Slicer::ModelPartPtr mp) { if (!cmd.fetch()) { - throw NoRowsReturned(); + if (!mp->IsOptional()) { + throw NoRowsReturned(); + } + return; } DeserializeRow(mp); if (cmd.fetch()) { |