如何查找数据库中创建的存储过程列表?需编辑但仅能看到函数
查找并编辑PostgreSQL中的存储过程
筛选存储过程的SQL语句
你当前的SQL会返回public schema下所有函数和存储过程,因为PostgreSQL中两者都存在于pg_proc系统表。要单独筛选存储过程,只需添加prokind = 'p'的条件:
SELECT proname FROM pg_proc WHERE pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public') AND prokind = 'p';
其中prokind字段用于区分对象类型:
f= 普通函数(FUNCTION)p= 存储过程(PROCEDURE)
为什么存储过程没出现在函数列表里
多数数据库GUI工具(比如pgAdmin)会把函数和存储过程分成两个独立的菜单:
- 函数(Functions):仅显示
prokind = 'f'的对象 - 存储过程(Procedures):单独显示
prokind = 'p'的对象
你需要在工具的对应分类下找到存储过程,而非在函数列表里查找。
编辑存储过程的方法
用SQL语句修改
如果要修改存储过程的逻辑,可以使用ALTER PROCEDURE(需匹配原参数定义):
ALTER PROCEDURE public.your_procedure_name(参数类型列表) LANGUAGE plpgsql AS $$ -- 这里写修改后的存储过程代码 $$;
如果需要修改参数个数、类型或其他无法通过ALTER调整的属性,需先删除再重新创建:
DROP PROCEDURE IF EXISTS public.your_procedure_name(参数类型列表); CREATE PROCEDURE public.your_procedure_name(新参数列表) LANGUAGE plpgsql AS $$ -- 新的存储过程逻辑 $$;
内容的提问来源于stack exchange,提问作者MASHHOUR ALHARTHI
相关产品推荐
相关产品推荐

