這几天忙著加班,沒來BBS沒有想到這么朋友來光臨,實在是高興不已.
我已經做了比較詳細的測試,現將結果公布如下,想必對各位會有所幫助:
一: BDE下TStoredProc
在BDE下使用TStoredProc時,調用TStoredProc的Prepare來獲得參數是十分不可靠
的.Borland并未公開這些方法.原因是Delphi自帶的這些方法會存在與DBMS的版本
的沖突問題.我在Delphi4 加 SQL Server 7下能夠通過Prepare來獲得正確參數.但
在Delphi5(6) + SQL Server2000下并不能正確得到參數,ParamType不對.
所以考慮到程序的通用性,不見議使用些方法,至于qdyoung兄所說的只要對存儲名
賦值的做法是行不通的.不知各位是否知道在SQL Server(6.5以上的版)中自帶有一個
存儲過程可以獲得TStoredProc的參數.用此方法CreateParam是最安全的.在Oracle中
我只做了几個簡單的測試,通過了.但我想也存在同樣的問題.(Oracle 8.0.7+Delphi6)
二:ADO下的TADOStoredProc
測試表明在ADO下調用Param.Refresh是可以正確得到所有參數,且沒有什么問題.這與
Microsoft的驅動有關.如果你用ADO可以考慮些方法,畢竟這樣代碼可以簡化許多.
在本問題結束之時,我要感謝以下几個同仁:
a.qdyoung,zbsfg 謝謝你們的參與和測試.
b.hnyangbin 謝謝你的代碼范例.
c.IT书生 你的做法和我們的做法相似,三層似乎這種方法是The Best.