00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _EYEDB_OQL_H
00026 #define _EYEDB_OQL_H
00027
00028 namespace eyedb {
00029
00038 class OQL {
00039
00040
00041
00042
00043 public:
00049 OQL(Database *db, const char *fmt, ...);
00050
00056 OQL(Connection *conn, const char *fmt, ...);
00057
00062 Status execute();
00063
00069 Status execute(Value &value);
00070
00071
00072
00079 Status execute(ObjectPtrVector &obj_vect,
00080 const RecMode *recmode = RecMode::NoRecurs);
00081
00088 Status execute(ObjectArray &obj_array,
00089 const RecMode *recmode = RecMode::NoRecurs);
00090
00096 Status execute(OidArray &oid_array);
00097
00103 Status execute(ValueArray &val_array);
00104
00110 Status getResult(Value &value);
00111
00112
00113
00120 Status getResult(ObjectPtrVector &obj_vect,
00121 const RecMode *recmode = RecMode::NoRecurs);
00122
00129 Status getResult(ObjectArray &obj_array,
00130 const RecMode *recmode = RecMode::NoRecurs);
00131
00137 Status getResult(OidArray &oid_array);
00138
00144 Status getResult(ValueArray &val_array);
00145
00150 Database *getDatabase() {return db;}
00151
00152 ~OQL();
00153
00154
00155
00156
00157 private:
00158 char *oql_string;
00159 int qid;
00160 Connection *conn;
00161 Database *db;
00162 Value result_value;
00163 Bool state;
00164 Status oql_status;
00165 void init(Database *);
00166 Bool executed;
00167 Bool value_read;
00168 SchemaInfo *schema_info;
00169 Status getResult();
00170 void init(Connection *, Database *, const char *);
00171 void log_result() const;
00172
00173 public:
00174 static Status initDatabase(Database *db);
00175 };
00176
00177
00182 }
00183
00184 #endif