转载自http://zhenghaoju700.blog.163.com/blog/static/13585951820116782843994/

先安装一个PostgreSQL(见补充知识)

比较Oracle PL/SQL

PL/SQL 中有 dbms_output.put_line("This is a log"); 可以进行简单的调试

当然我们PostgreSQL 也有相应的函数 RAISE NOTICE 'This is a log %', param;

% 占位符 param 替换的值

RAISE 还有其他级别 DEBUG,LOG,INFO,EXCEPTION

可以在配置文件中配置它们 postgresql.conf 中的 client_min_messages 和 log_min_messages

RAISE EXCEPTION 会暂停函数的运行,其他级别默认应该是显示到客户端。

 

举一个简单的例子吧

举例之前 首先确定自己的数据库有没有安装 plpgsql

select * from pg_language;

如果没有的话 

create language plpgsql;

简单例子:

CREATE OR REPLACE FUNCTION perctl.testraise()
RETURNS void AS
$$
declare
begin
raise notice '===============';
while(2>1) loop
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
raise notice '====================================================================================================================================================================================';
end loop;
raise log '===============';
end;
$$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION perctl.fx_test_outofmemory_1()
OWNER TO root;

测试一下

select TESTRAISE('this is a message');

为什么只有 Notice 和 INFO 信息呢?

通过 find / -name  postgresql 查找postgresql 安装目录

hjzheng@ubuntu:/etc/postgresql/8.4/main$ pwd

/etc/postgresql/8.4/main

在etc下查看配置文件  vim postgresql.conf 

看到客户端最小显示级别是NOTICE 所以必须大于Notice 才显示 这就是log为什么没有显示

DEBUG 没显示 是因为它们只有DEBUG(1-5)

这样就可以放心调试了!!!!

补充知识:

安装环境 Ubuntu 11.03

1.sudo apt-get install postgreSQL

2.sudo passwd postgres 改密码 这个用户是数据库自己创建的

3.启动服务 service postgresql start

4.su  postgres

5.psql 打开交互shell

6.\l 列出所有数据库

参考资料:

http://www.postgresonline.com/journal/archives/83-Quick-Guide-to-writing-PLPGSQL-Functions-Part-3-NOTICES,-RECURSION,-and-more.html

Postgresql存储过程调试:PostgreSQL 之 Function NOTICE的更多相关文章

  1. Postgresql 存储过程调试 1

    看来人真的有些力不从心,半个月前还很得意掌握的简单的Postgresql 存储过程的调试,一段时间没使用,做新功能就忘了! Postgresql 在开源的数据库里面算是很强悍的了,但现在就是不方便调试 ...

  2. PostgreSQL存储过程<转>

    原创文章,转载请务必将下面这段话置于文章开头处(保留超链接).本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/12/27/SQL4_存储过程_St ...

  3. PostgreSQL 存储过程/函数

    1.有用的链接 postgresql 常用小函数 Postgresql数据库的一些字符串操作函数 PostgreSQL function里面调用function PostgreSQL学习手册(函数和操 ...

  4. Mybatis调用PostgreSQL存储过程实现数组入参传递

    注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于Pos ...

  5. 调用PostgreSQL存储过程,找不到函数名的问题

    PostgreSQL的表,函数名称都是严格区分大小写的,所以在使用的时候没有注意大小写问题容易导致找不到函数名的错误,但最近两天我们发现,如果函数参数使用了自定义的数据类型,也会发生这个问题. 问题描 ...

  6. postgresql 存储过程动态更新数据

    -- 目标:动态更新表中数据 -- 老规矩上代码-----------------------------tablename 表名--feildname 字段名数组--feildvalue 字段值数组 ...

  7. cgdb调试postgresql

    之前一直用gdb调试代码,最近在搞pg的时候用了一个cgdb,体验很好,调试pg代码的时候真的很方便. 本文主要讲解在进行pg内核开发的时候,如何搭建一个环境,用cgdb方便快捷的调试postgres ...

  8. Linux+eclipse+gdb调试postgresql源码

    pg内核源码解析课上用的vs调试pg源码, VS用起来确实方便,但是配置调试环境着实有点麻烦.首先得装个windows系统,最好是xp,win7稍微麻烦点:最好使用vs05,08和10也可以,但是比0 ...

  9. clion调试postgresql

    clion怎么调试postgresql呢? clion使用cmake去编译项目的,但是大家编译postgresql用的是make.虽然项目中也有CMakeLists.txt文件,但是cmake会报错, ...

随机推荐

  1. MySQL FUNCTION 整理

    -- 返回最后一个INSERT查询中, AUTO_INCREMENT列设置的第一个表的值. SELECT LAST_INSERT_ID();

  2. 修改mysql密码

    方法1: 用SET PASSWORD命令首先登录MySQL.格式:mysql> set password for 用户名@localhost = password('新密码');例子:mysql ...

  3. Python’s SQLAlchemy vs Other ORMs[转发 2]Storm

    Storm Storm is a Python ORM that maps objects between one or more databases and Python. It allows de ...

  4. jq load()方法用法

    //鼠标划上去默认样式添加 listNow = getUrlParam("page"); $(".header").load("../file/hea ...

  5. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

  6. 以forin的方式遍历数组时进行删除操作的注意点

    今天在修改某项需求的时候,需要在遍历的时候将匹配项移除掉,采用的时forin的方式遍历,然后运行的时候却crash掉了 for (NSString*str in self.btnArray) { if ...

  7. redhat openshift 跳转

    网址: https://openshift.redhat.com/ OpenShift免费套餐的限制是:最多15PV/s,有3个512MB内存的应用,月流量在50K以下. 可以绑米,可惜的是,需要代理 ...

  8. Linux Mint 17使用小结

    用过蛮多的linux系统 linux mint是我比较喜欢和常用的一个系统,装的是linux mint xfce 64位版本,在这里记录使用中遇到的一些问题及解决的方法,备忘,方便以后查看. 1.首先 ...

  9. js中Array的一些扩展

    IE下很多Array的方法都不被支持.每次都要写.所以记下来,以免忘记: 以下是对Array的一些扩展,在FF ,google 下是不需要加的. /** * 方法Array.filter(functi ...

  10. Bootstrap<基础十六> 导航元素

    Bootstrap 提供的用于定义导航元素的一些选项.它们使用相同的标记和基类 .nav.Bootstrap 也提供了一个用于共享标记和状态的帮助器类.改变修饰的 class,可以在不同的样式间进行切 ...