當前位置:首頁 » 編程語言 » plsql游標

plsql游標

發布時間: 2025-07-26 15:09:51

A. 我寫了一個pl/sql,主要是用游標遍歷一張表.

1.檢查一下游標C1中查詢語句的執行計劃,看看是不是耗時很多。10萬數據並不多,而且你做了函數索引。所以我滾納滑猜這個不是問大臘題產生的原因;
2.檢查一下你的兩層循環到底有多少次,是不茄薯是次數過多。目測不會超過10萬吧。所以應該也不是問題關鍵;
*.以上兩點可以通過使用plsql developer工具debug該過程時,點擊create profiler report,然後執行,再從debug界面的profiler分頁查看。
3.你的過程中 update cyd 和 fhz,執行過程的時候,有沒有什麼其他程序再多兩個表做update,有沒有鎖表。cup使用率是否高;
4.通常不要在查詢a表的循環中對a表update。你這里查詢Cyd內部就對Cyd進行了update,這樣有問題。我曾經遇到過,程序會鎖住。
*.對於你的程序,給你個建議,把一下這段代碼寫成一個function,在由表中查尋結果中直接調用:
FOR i IN 1 .. Lengthb(Yw_Old) LOOP
Tmp := Substr(Yw_Old, i, 1);
IF (Tmp = 'A') THEN
Yw_New := Yw_New || 'B3';
ELSIF (Tmp = 'B') THEN
Yw_New := Yw_New || 'B3';
ELSIF (Tmp = 'C') THEN
Yw_New := Yw_New || 'C1';
ELSIF (Tmp = 'D') THEN
Yw_New := Yw_New || 'D1';
END IF;
END LOOP;
*.假設function叫做fun_pack,游標改成這樣:
CURSOR C1 IS
SELECT Cyh,
fun_pack(Yw),
Pzyw,
Djyw
FROM Cyd
WHERE Substr(Slsj, 1, 4) = Yearc;

B. 在postgresql中創建帶游標的存儲過程(function)

在postgresql中創建帶游標的存儲過程(function)
一般在plsql中執行存儲過程的方式有兩種,一種是帶參數的 begin 存儲過程名(參數1,參數2...); end; 另一種是不帶參數的 begin 存儲過程名; end; 注意標點的寫法,都是英文寫法的

熱點內容
鋁壓縮曲線 發布:2025-07-27 00:48:16 瀏覽:560
修改ftp主動模式 發布:2025-07-27 00:48:01 瀏覽:853
java查看環境變數 發布:2025-07-27 00:45:47 瀏覽:14
php文件結構 發布:2025-07-27 00:44:19 瀏覽:672
阿里雲伺服器資料庫收費 發布:2025-07-27 00:44:18 瀏覽:681
安卓引導模式怎麼取消 發布:2025-07-27 00:19:11 瀏覽:275
幸運9變色腳本 發布:2025-07-27 00:13:14 瀏覽:928
linuxdate修改 發布:2025-07-27 00:08:01 瀏覽:547
114la源碼 發布:2025-07-26 23:55:54 瀏覽:315
我的世界怎麼毀伺服器主城 發布:2025-07-26 23:54:48 瀏覽:212