oracle toda和pl/sql匪夷所思的差異


在編寫一個存儲過程的時候,起初因為是同事寫的,它是在toad中寫的,已經寫好了,需要我進行一下改造,於是我使用PL/SQL打開后進行修改並編譯通過,然后在PL/SQL進行了測試,奇怪的是測試的時候PL/SQL顯示一直在執行,一直不能完成執行。起初我以為是存儲過程的寫的有問題,於是遠程到服務器上用TOAD 測試,結果TOAD執行只需要2s就搞定了。所以十分不解TOAD 和PL/SQL的差異為何如此之大,是我的代碼寫的有問題嗎?

  存儲過程其實也就是執行了以下的代碼:

SQLSTR := 'INSERT INTO A(a1,a2,SHAPE)
                              SELECT D.a1,D.a2,SDE.ST_INTERSECTION (:1,D.SHAPE)
                              FROM '||tabname||' D WHERE SDE.ST_INTERSECTS(:2,D.SHAPE)=1';
      EXECUTE IMMEDIATE SQLSTR USING MYPOLY, MYPOLY2;

在toad中我使用如下如下語句執行:

exec test_pro('POLYGON ((10.01 20.03, 20.94 21.34, 35.93 10.04, 10.01 20.03))')

整個過程只需要2s,為何pl/sql死活不能執行結束?因為之前在PL/SQL也寫過像上一篇中寫道的存儲過程,執行的也很成功,並非是設置的原因造成的。各位是否遇到過此類問題,百思不得其解中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM