導航:首頁 > 源碼編譯 > psql重新編譯存儲過程

psql重新編譯存儲過程

發布時間:2022-06-26 20:06:03

『壹』 postgresql存儲過程怎麼寫

寫個觸發器 插入之前執行觸發器

-- 創建一個測試表

create table test(id int primary key , name varchar(50));

-- 觸發器 插入前ID如果已經存在則替換name的值
CREATE OR REPLACE function _replace() RETURNS TRIGGER AS $INSERT$

declare

_has int ;

BEGIN

select id from test where id = NEW.id into _has;

raise notice 'ddd:%' , _has;

if _has > 0 then
update test set name = NEW.name where id = NEW.id;

RETURN null;

end if;

return NEW;

END;

$INSERT$

LANGUAGE PLPGSQL;

-- 給表加上觸發器
CREATE TRIGGER tbefore BEFORE INSERT ON test FOR EACH ROW EXECUTE PROCEDURE _replace();

-- 插入兩個值
insert into test(id , name) values(1,'1');
insert into test(id , name) values(1,'6');

select * from test;

結果:

pumpkin=> select * from test;
id | name
----+------
1 | 6
(1 行記錄)

時間:1.474 ms

『貳』 plsql存儲過程,執行失敗,但是重新編譯就能執行成功,什麼原因

可能你修改了與該存儲過程相關的數據表之類的對象,修改了之後,就會導致對應存儲過程失效

『叄』 為什麼我的存儲過程總要重新編譯

這是我同事做的一個存儲過程,我們一般都用這個處理
CREATE OR REPLACE PROCEDURE OWN.P_HSJ_COMPRE
IS
CURSOR cur_invalid_obj IS
SELECT uo.object_name,uo.object_type
FROM user_objects uo,
USER_ORDER_OBJECT_BY_DEPEND uobd
WHERE uo.object_id = uobd.object_id(+) AND uo.status != 'VALID'
ORDER BY uobd.dlevel desc,uo.object_type,uo.object_name;
ls_objname VARCHAR2(100);
ls_objtype VARCHAR2(100);
ls_status VARCHAR2(20);
ls_text VARCHAR2(4000);
ls_sql varchar2(100);
BEGIN
OPEN cur_invalid_obj;
LOOP
FETCH cur_invalid_obj INTO ls_objname,ls_objtype;
EXIT WHEN cur_invalid_obj%NOTFOUND;
IF ls_objtype IN ('PACKAGE BODY', 'PACKAGE', 'FUNCTION', 'PROCEDURE','TRIGGER', 'VIEW') THEN
if ls_objtype ='VIEW' then
ls_sql :=' ALTER VIEW '||LS_OBJNAME ||' COMPILE';
execute immediate ls_sql;
else
DBMS_DDL.alter_compile(ls_objtype,NULL,ls_objname);
end if;
SELECT status INTO ls_status FROM user_objects
WHERE object_name = ls_objname AND object_type = ls_objtype;
/* IF ls_status != 'VALID' THEN
SELECT text INTO ls_text FROM user_errors
WHERE name = ls_objname AND type = ls_objtype;
END IF;
*/
END IF;
END LOOP;
CLOSE cur_invalid_obj;
EXCEPTION
WHEN OTHERS THEN
IF cur_invalid_obj%ISOPEN THEN
CLOSE cur_invalid_obj;
END IF;
END;
/

『肆』 postgresql存儲過程怎麼用

PostgreSQL有pldbgapi擴展,先安裝此擴展。
首先,需要將debug的模組載入到PostgreSQL伺服器中去。做法是: 在pgAdminIII中以管理員登錄,然後選擇菜單「工具->伺服器配置->postgresql.conf」,

在配置窗口中,雙擊項目"shared_preload_libraries",

在其設定窗口中,將值設置成plugin_debugger的路徑(Windows 9.3版本的為$libdir/plugin_debugger.dll, $libdir一般為PostgreSQL安裝目錄下的lib文件夾)。非Windows系統的後綴名會有所不同,可能為plugin_debugger.so。
注意,在做這一步時最好先備份配置文件,以防指定文件找不到而導致伺服器不能啟動。
在設定完成之後,重新啟動PostgreSQL服務(以啟動debug插件)。
然後在pgAdminIII中擴展安裝時選擇如下圖項目,

這樣在函數的右鍵菜單中就有調試選項了,

當然,最常用的調試方式就是自己直接調用函數來查看執行結果是否正確。

『伍』 postgresql 怎樣對存儲過程進行調試

PostgreSQL有pldbgapi擴展,先安裝此擴展。

首先,需要將debug的模組載入到PostgreSQL伺服器中去。做法是: 在pgAdminIII中以管理員登錄,然後選擇菜單「工具->伺服器配置->postgresql.conf」,

當然,最常用的調試方式就是自己直接調用函數來查看執行結果是否正確。

『陸』 plsql編譯存儲過程

如果是在plsql
developer中修改的,可以直接點那個齒輪圖標,或者F8即可編譯。
如果是在sqlplus中,那就敲入修改後的過程代碼(create
or
replace
procere...),最後以/結尾運行即可。

『柒』 哪些情況需要重新編譯存儲過程

如果是在plsql developer中修改的,可以直接點那個齒輪圖標,或者F8即可編譯。 如果是在sqlplus中,那就敲入修改後的過程代碼(create or replace procere...),最後以/結尾運行即可。

『捌』 PLSQL修改了存儲過程如何編譯保存

如果是在plsql developer中修改的,可以直接點那個齒輪圖標,或者F8即可編譯。
如果是在sqlplus中,那就敲入修改後的過程代碼(create or replace procere...),最後以/結尾運行即可。

『玖』 pgadmin4 編譯存儲過程

我知道利用c++語句編譯儲存
1)更改資料庫目錄下的postgresql.conf,加入如下紅色語句:
#shared_preload_libraries = '' # (change requires restart)(這個系統默認下是注釋掉的,在這句下面加入下面語句)
shared_preload_libraries = '$libdir/plugins/plugin_debugger'(這是新加入的)
2)重新啟動pg服務
3)在要進行調試的資料庫里執行pldbgapi.sql文件,這個文件在你pg安裝目錄的share/postgresql/contrib/下面
調試pg的function
1)打開pgadmin4,打開你要調試的資料庫,在你要調試的function上右擊,這時你會發現多了一項Debugging,占擊子項中的debug就可對function進行調試了。

閱讀全文

與psql重新編譯存儲過程相關的資料

熱點內容
帝國時代java下載 瀏覽:51
數據結構的經典演算法題 瀏覽:192
逍遙安卓多開管理器是干什麼的 瀏覽:912
程序員收玉米一天多少錢 瀏覽:353
程序員很可愛根據哪本小說改編的 瀏覽:982
游戲舊版安卓怎麼玩 瀏覽:261
冗餘單片機 瀏覽:846
cad抽殼命令怎麼用 瀏覽:29
伺服器第一地址怎麼改 瀏覽:494
單片機最小系統電路設計流程圖 瀏覽:665
steam源碼 瀏覽:31
關於對數的運演算法則及公式 瀏覽:777
明星談如何緩解壓力 瀏覽:143
androidlistview隱藏列 瀏覽:400
plc跑馬燈編程 瀏覽:821
ios開發之網路編程 瀏覽:427
處理照片視頻哪個app好 瀏覽:392
logback壓縮 瀏覽:895
冰箱壓縮機可以用氣割嗎 瀏覽:535
菜鳥如何加密商品信息 瀏覽:321