sql - 在没有 pg_lang 条目的情况下在 Postgresql 中查找存储过程语言的策略

标签 sql postgresql schema

我有一个 prolang 为 16386 的过程,它不对应于 pg_lang 中的任何条目;我还可以在哪些其他可能的地方查找这是什么语言?

我应该使用哪些其他策略来查找语言?

最佳答案

如果语言存在:

最简单的方法是使用 psql 登录并键入:

\df+ function_name

这将列出所有具有相同名称的函数、它们的参数、模式、源代码和语言。

可以直接查看系统目录(pg_proc 和 pg_language),但这里的一个问题是它们有时会在主要版本之间发生变化,因此最好依赖与相同主要版本绑定(bind)的 psql 信息函数你的数据库服务器。

如果语言不存在:

select * from pg_proc where .... 

为您提供有关该语言的所有信息(其源代码、链接器符号等)

从那里你应该能够找出它是什么语言。 16386 不是内置的之一,因此它一定是用户定义的,您将不得不进行一些挖掘。

例如,指向 .jar 的内容会建议使用 pl/java。源代码可能会被识别为一种语言(您应该能够看到它是 pl/ruby 还是类似语言)。

一种可能是升级失败和不再维护的语言处理程序造成的。

关于sql - 在没有 pg_lang 条目的情况下在 Postgresql 中查找存储过程语言的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671139/

相关文章:

postgresql - Postgres Cast 复合类型

postgresql - plpgsql - 如何从存储过程中返回参数和引用游标?

php - 如何设置 SQL 表以高效、轻松地存储单个事件的多个日期和时间?

sql - sql join告诉我其他表中是否存在ID

mysql - 尝试选择以特定字母开头和结尾的对象

PHP 插入 PostgreSQL

node.js - 将 Joi 模式与 Mongoose 模式一起使用?

mysql - 你如何构建一个允许投票的数据库,类似于 stackoverflow 的做法?

MySql Join with Sum 返回错误的输出

sql - 将唯一标识符外键插入到 SQL Server 中的表中