VB6調用oracle預存程序的一個小問題

來源:互聯網
上載者:User

    10年前用VB6編寫的程式,不停的修修改改,一直用到現在,而且將繼續使用幾年。

    本人最近接手了這個程式,除了“悲催”,實在想不出來其他詞來形容本人的心情了。

    廢話略過,最近碰到一個調用預存程序的問題,耗費了一些時間,最終解決了,把結果貼出來,如果還有人像本人一樣在用VB6,希望能有所協助。

 

    這個古老的程式,在調用oracle預存程序時,根據配置可使用不同的資料引擎,有2種可選
Provider=OraOledb.Oracle.1
Provider=MSDAORA.1

 

    調用預存程序的代碼如下

        'cnDb.ConnectionString   =   "Provider=MSDAORA.1;… "
        cnDb.Open
        cmd.ActiveConnection   =   cnDb
        cmd.CommandType   =   adCmdStoredProc
        cmd.CommandText   =   "procName"

        cmd.Parameters("para1") =para1

        cmd.Parameters("para2") =para2

        cmd.Execute    'Provider=OraOledb.Oracle.1時,在這裡報錯

        paraOut = cmd("out")  ' 輸出參數是string類型

 

    如果使用“Provider=OraOledb.Oracle.1”,調用預存程序時報錯“提供者不能匯出參數資訊,沒有調用 SetParameterInfo”。

    如果使用“Provider=MSDAORA.1”,則調用預存程序正常。

 

    查閱了一些資料,修改為下面的代碼,使用2種方式都可以正常調用

        'cnDb.ConnectionString   =   "Provider=MSDAORA.1;… "
        cnDb.Open
        cmd.ActiveConnection   =   cnDb
        cmd.CommandType   =   adCmdStoredProc
        cmd.CommandText   =   "procName"

        cmd.Parameters.Append cmd.CreateParameter( "para1", adLongVarChar, adParamInput, 1000, para1)

        cmd.Parameters.Append cmd.CreateParameter( "para2", adLongVarChar, adParamInput, 1000, para2)

        cmd.Execute    'Provider=OraOledb.Oracle.1時,不報錯了

        paraOut = cmd("out")  ' 輸出參數是string類型

 

 

    如果預存程序返回結果集,情況更複雜,參見這裡:http://topic.csdn.net/t/20060323/15/4634977.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.