【发布时间】:2017-03-31 22:03:41
【问题描述】:
鉴于上面的代码,我如何获取插入数据库的行的 ID。我正在使用 C++ 和 oracle OCCI 接口:
std::stringstream sqlStream("");
sqlStream << "INSERT INTO MYTABLE (COL1, COL2, COL3) VALUES (1, 2, 3) RETURNING ID INTO :my_id_param";
std::string sql(sqlStream.str());
std::cout << sql << std::endl;
std::unique_ptr<oracle::occi::Statement> stmt(connection->createStatement());
stmt->execute(sql.c_str());
//??? How can I access here the my_id_param ?
感谢您的帮助。
【问题讨论】:
-
您没有将值插入到
ID列中。您如何生成要返回的值(或者您是否期望NULL值)? -
ID 是一个触发器,它从 SEQUENCE 生成值:
CREATE OR REPLACE TRIGGER MYTRIGGER BEFORE INSERT ON MYTABLE FOR EACH ROW BEGIN SELECT MYSEQ.NEXTVAL INTO :NEW.ID FROM DUAL; END MYTRIG;'。工作正常 - 对于每个 INSERT,都会自动生成 ID。