導航:首頁 > 源碼編譯 > 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重新編譯存儲過程相關的資料

熱點內容
單片機原理及介面技術b卷 瀏覽:354
php鏈接正則表達式 瀏覽:964
安卓版蘋果手機怎麼轉手 瀏覽:101
安卓怎麼修改app的名字 瀏覽:135
域名伺服器可將域名地址 瀏覽:721
廣州伺服器機櫃怎麼賣 瀏覽:236
轉讓騰訊雲三年伺服器 瀏覽:252
網易雲音樂加密怎麼處理 瀏覽:387
編譯小視頻軟體 瀏覽:595
盒馬app買東西怎麼送 瀏覽:119
編譯原理國產 瀏覽:691
在線用pdf轉word 瀏覽:424
咪咕app怎麼發表文章 瀏覽:209
phpsftp上傳 瀏覽:936
php可以幹嘛 瀏覽:879
梁箍筋加密區需要滿綁扎嗎 瀏覽:330
程序員半個月工資多少 瀏覽:821
雲伺服器租賃還是私有 瀏覽:752
php七牛視頻上傳 瀏覽:14
php五星 瀏覽:311