我正在逐步从MSSQL转向PostgreSQL。
在MSSQL中,我可以调用已保存的存储过程或函数进行编辑,并且管理控制台(SQL Server Management Studio)会显示过程的文本,因此我不必将其源代码存储在文本文件中。
如何以方便的方式在PostgreSQL中完成相同操作?我正在使用pgAdmin III。
我正在逐步从MSSQL转向PostgreSQL。
在MSSQL中,我可以调用已保存的存储过程或函数进行编辑,并且管理控制台(SQL Server Management Studio)会显示过程的文本,因此我不必将其源代码存储在文本文件中。
如何以方便的方式在PostgreSQL中完成相同操作?我正在使用pgAdmin III。
vim
后加一个分号 ;
可以按预期工作。因此:\ef function
;进行更改;从 vim
中退出,使用 ZZ
/wq
/等命令;在 psql 命令行中输入分号 ;
。 - bishoppublic
具有函数的 EXECUTE
权限。您可以撤销此权限 - 这仅对 SECURITY DEFINER
函数有用。但是,pgAdmin 的反向工程 DDL 语句中缺少此 REVOKE
(一个 NULL 被误认为是空 ACL)。如果您删除并重新创建这样的函数,请小心!这也是一种方便的方式,可以编辑代码并进行测试。
1) 从pgAdmin中提取所需的SQL函数代码。
2) 将函数的代码与文件.sql放在一起。
3) 在与file.sql相同的目录下创建一个shell/bat文件:
psql -U postgres dbname < file.sql
4) 将shell/bat文件的快捷方式放入快速面板中。
5) 使用您喜欢的文本编辑器编辑文件,并按快捷方式来更新功能。
phpPgAdmin将允许您在界面内编辑存储过程。在您的问题下留下有关外部存储以进行版本控制的评论也强烈推荐。
在对象树中(左侧),右键单击功能 -> 脚本 -> 创建脚本
-或者-
执行新的SQL查询 -> 将“创建或替换函数…”的代码复制到其中
然后编辑脚本,不要忘记执行它