导航:首页 > 源码编译 > 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抽壳命令怎么用 浏览:27
服务器第一地址怎么改 浏览:494
单片机最小系统电路设计流程图 浏览:663
steam源码 浏览:29
关于对数的运算法则及公式 浏览:775
明星谈如何缓解压力 浏览:143
androidlistview隐藏列 浏览:400
plc跑马灯编程 浏览:821
ios开发之网络编程 浏览:427
处理照片视频哪个app好 浏览:392
logback压缩 浏览:895
冰箱压缩机可以用气割吗 浏览:535
菜鸟如何加密商品信息 浏览:321