Ado.net Oracle語句問題

來源:互聯網
上載者:User

   由於接觸Oracle不多,公司培訓也少,這樣的公司也就是騙騙人還行,估計沒有什麼長足發展!
   言歸正傳。
    從昨天開始就調試一段執行Oracle語句的程式,把程式搜尋了半天也沒有發現問題,sql 在 pl/sql developer裡面執行也沒有問題,可是一調試就提示 ORA-06550 錯誤。眾所周知,oracle錯誤提示很讓人摸不著頭腦,除非這方面的經驗豐富。

    最終從本站的 http://teamleader.cnblogs.com 這位高手中找到解決了,哎,沒想到還有這種問題。現在把這個問題的解決方式貼在下面:(其實很簡單,就是 分行符號引起的)
  有時我們需要一次性執行多條sql語句,而用來更新的sql是根據實際情況用代碼拼出來的

    解決方案是把sql拼成下面這種形式:

    begin
    update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837' and train_id = '0233086';
    update TB_VG set seq = 2, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20992' and train_id = '0233110';
    end;
    總結如下:
    以begin開始,以end;結尾(end後的分號不能省),中間的每個sql語句要以分號;結尾

    在實際編碼中,發現即使這樣也會有錯誤發生,把sql語句中的分行符號替換成空格就可以了
    比較穩妥的編碼方式是:
    1、以正常的方式編寫sql,根據閱讀與編寫的需要,中間肯定會有分行符號
    2、在執行之前進行替換:strSql = strSql.Replace("r\n", " ").Replace('\n', ' ');

    如果不採用這種方式,可能的異常有:

    ORA-00933: SQL 命令未正確結束(如果sql沒有以分號結尾)
    ORA-00911: 無效字元(如果未加begin 和 end)
    ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 "end-of-file"在需要下列之一時:......(如果end後面沒有;分號)
    ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 ""在需要下列之一時:......(語句之間有分行符號) 

    在此感謝一下這位好心人,謝謝。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.