很簡單 - 有沒有一種方法可以使用此庫調用存儲過程或函數,並返回多個結果?我瞭解ITRoutingManager
,但它似乎只返回一個值..使用用於C++的Informix對象接口用於帶有參數的存儲過程/函數
在細節,這裏就是我的意思:
CREATE FUNCTION test_out1(pin INT)
RETURNING INT;
DEFINE param INT;
LET param = 321;
RETURN param;
END FUNCTION;
返回321
,我可以ITValue
和ITConversions
獲得的價值。所以這很好。但是,下面是不是:
CREATE FUNCTION test_out2(pin INT)
RETURNING INT, INT;
DEFINE param INT;
LET param = 321;
DEFINE param2 INT;
LET param2 = 123;
RETURN param, param2;
END FUNCTION;
當我做routine.GetRoutine("function test_out2(int)")
,它必將很好,所以沒有這一問題。但看到這一點:
std::cout << "Result type: " << routine.ResultType()->Name() IsRow() ? "row, " : ", ")
<< (routine.ResultType()->IsCollection() ? "collection, " : ", ")
<< routine.ResultType()->Quality() << "\n\n";
打印integer, , , null
,注意整數。爲什麼是整數,不能行,例如。和如何獲取2個值,由函數返回?另一個有趣的事實 - 返回值爲0 (當我將其轉換爲int
,使用ITConversions
類),而不是123,也不是321 ..
有必須的一種方式。這是Informix開發人員爲Informix服務器編寫的一個特殊庫,如果這不可能,那將會很奇怪。
同樣的功能,但我想它是一樣的。
注:有沒有這樣的事情在通常情況下作爲輸出參數,爲Informix過程/函數(Informix: procedure with output parameters?)
您高估了OIC++軟件包的效用。它是使用宏而不是模板編寫的古老的預標準C++。自從它在1996年寫成以來,它並沒有被認真修改過 - 幾年前得到了一些清理,因此編譯器的投訴減少了。請注意'投訴少' - 不是'沒有投訴'。我不會推薦它用於新代碼。 – 2011-03-31 15:20:05
@Jonathan Leffler - 我的另一種選擇是使用ODBC驅動程序,它對Informix服務器來說非常合適。我想使用OIC++軟件包,因爲它僅用於Informix,因此我預計它會更快(適用於負載非常高的實時系統)。但它似乎**甚至更慢**,除了當使用ITRoutineManager時 - 那麼,通過這個類,性能**好兩倍**。但是,只有那麼..所以,請問,請指教?我猜ODBC會是更好的選擇?提前感謝! – 2011-03-31 15:35:22
我在說unixODBC,忘了提。我在您的個人資料中看到了描述(「長時間使用Informix的用戶和開發人員,在C和Unix中經驗豐富」),我將非常感謝您的意見。 – 2011-03-31 15:37:40