aboutsummaryrefslogtreecommitdiff
path: root/odb/relational/oracle/source.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/relational/oracle/source.cxx')
-rw-r--r--odb/relational/oracle/source.cxx27
1 files changed, 13 insertions, 14 deletions
diff --git a/odb/relational/oracle/source.cxx b/odb/relational/oracle/source.cxx
index 2fc2ad2..3a6b46a 100644
--- a/odb/relational/oracle/source.cxx
+++ b/odb/relational/oracle/source.cxx
@@ -595,30 +595,29 @@ namespace relational
os << "st.stream_result ();";
}
- virtual void
+ virtual string
persist_statement_extra (type& c,
relational::query_parameters& qp,
persist_position p)
{
- if (p != persist_after_values)
- return;
+ string r;
- semantics::data_member* id (id_member (c));
+ if (p == persist_after_values)
+ {
+ semantics::data_member* id (id_member (c));
- type* poly_root (polymorphic (c));
- bool poly_derived (poly_root != 0 && poly_root != &c);
+ type* poly_root (polymorphic (c));
+ bool poly_derived (poly_root != 0 && poly_root != &c);
- if (id != 0 && !poly_derived && id->count ("auto"))
- {
// Top-level auto id.
//
- os << endl
- << strlit (" RETURNING " +
- convert_from (column_qname (*id, column_prefix ()),
- *id) +
- " INTO " +
- qp.next ());
+ if (id != 0 && !poly_derived && id->count ("auto"))
+ r = "RETURNING " +
+ convert_from (column_qname (*id, column_prefix ()), *id) +
+ " INTO " + qp.next ();
}
+
+ return r;
}
};
entry<class_> class_entry_;