天天看點

linux環境下,c++ otl操作資料庫的參數怎麼順序,C++ OTL SQL資料庫庫使用引擎下的參數化查詢,還是字元串CONTAT?...

OTL作者對我電子郵件的回複:

OTL将帶有占位符的查詢傳遞到DBAPI層。實際綁定變量的命名約定對于不同的DB類型是不同的。對甲骨文來說,

SELECT * FROM staff WHERE fname=:f_name

将被翻譯成:

SELECT * FROM staff WHERE fname=:f_name

加上一堆主機變量綁定調用。

對于MS SQL Server或DB2,相同的選擇如下:

SELECT * FROM staff WHERE fname=?

手冊中描述過,對于MS SQL、DB2,不能多次使用相同名稱的占位符。具有占位符/綁定變量的SQL語句的建立成本相對較高,是以,如果通過OTL_流執行個體化參數化SQL,則盡可能多地重用該流是有意義的。

如果您對我如何改進OTL手冊有更多的問題或建議,請随時給我發電子郵件。

幹杯,

謝爾蓋

菲亞巴克寫道:

嗨,我最近一直在評估C++資料庫,以作為我希望建構的ORM庫的基礎,并且越來越受到OTL的影響。順便說一下,它看起來很不錯,似乎能滿足我的大部分需求。我隻是有一個揮之不去的問題,我似乎無法通過閱讀檔案來澄清。OTL是将參數化查詢傳遞給底層DBMS,還是将參數和我傳遞給OTL流的查詢連接配接成單個字元串并傳遞給DBMS?

換句話說,如果我把這個mssql查詢連同字元串“bob”作為綁定變量送出給otl:

SELECT * FROM staff WHERE fname = :f_name

OTL解析器是否生成:

SELECT * FROM staff WHERE fname = 'Bob'

或者:

SELECT * FROM staff WHERE fname = @f_name

以及作為參數的字元串

謝謝你抽出時間