1
存在Microsoft SQL Server上存储的过程。过程可以返回一个值。 如何使用ODB ORM从MS SQL Server数据库执行存储过程并获取此过程返回的值?使用ODB ORM执行存储过程
存在Microsoft SQL Server上存储的过程。过程可以返回一个值。 如何使用ODB ORM从MS SQL Server数据库执行存储过程并获取此过程返回的值?使用ODB ORM执行存储过程
您可以使用本机视图。详情请参阅ODB手册第10章“视图”。
调用存储过程的正确的解决方案是以下
#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))));
的主要问题是,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