2014-06-30 104 views

回答

0

您可以使用本机视图。详情请参阅ODB手册第10章“视图”。

+0

的主要问题是,ODB预规划“WHERE”语句,以原生SQL查询字符串,如果这种说法是不是开始“FROM”,“WHERE”等等。例如,ODB将查询“EXEC MyStoreProcedure param1,param2”转换为“WHERE EXEC MyStoreProcedure param1,param2”)。 我调用了libodb-mssql-2.3.0库。我添加了条件's.compare(0,(n = 4),“EXEC”)== 0 || s.compare(0,(n = 4),“exec”)== 0)'function check_prefix in file query.cxx。 有没有解决方案来调用存储过程而不修改ODB库的源代码? – user3790483

0

调用存储过程的正确的解决方案是以下

#pragma db view query("exec MyStoredProc (?);") 
struct StoredProc 
{ 
    int Result; 
    std::string Comment; 
}; 


. 
. 
. 


typedef odb::result<StoredProc> Result; 
typedef odb::query<StoredProc> Query; 

. 
. 
. 

Result r(db.query<StoredProc>(Query::_val(param1) + ", " 
     + Query::_val(param2))));