summaryrefslogtreecommitdiff
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.cxx29
1 files changed, 29 insertions, 0 deletions
diff --git a/odb/relational/oracle/source.cxx b/odb/relational/oracle/source.cxx
index d50808a..992a8e4 100644
--- a/odb/relational/oracle/source.cxx
+++ b/odb/relational/oracle/source.cxx
@@ -763,6 +763,35 @@ namespace relational
{
os << "sts.find_statement ().stream_result ();";
}
+
+ virtual void
+ persist_stmt (type& c)
+ {
+ os << strlit ("INSERT INTO " + table_qname (c) + " (") << endl;
+
+ instance<relational::object_columns> ct (false);
+ ct->traverse (c);
+
+ string values;
+ instance<relational::persist_statement_params> pt (values);
+ pt->traverse (c);
+
+ os << strlit (") VALUES (" + values + ")");
+
+ semantics::data_member* id (id_member (c));
+
+ if (id->count ("auto"))
+ {
+ ostringstream n;
+ n << pt->count () + 1;
+
+ os << endl
+ << strlit (" RETURNING " +
+ column_qname (*id) +
+ " INTO :" +
+ n.str ());
+ }
+ }
};
entry<class_> class_entry_;
}