yel*_*cap 7 postgresql stored-procedures capitalization keyword plr
我试图在PostgreSQL 9.2数据库中使用PL/R过程语言.我已经安装了该plr
语言,我正在尝试将其添加到数据库中.当我运行该命令时,CREATE EXTENSION plr;
我收到以下错误:
ERROR: language "C" does not exist
STATEMENT: CREATE EXTENSION plr;
ERROR: language "C" does not exist
Run Code Online (Sandbox Code Playgroud)
当我列出数据库中的可用语言时,select * from pg_language;
我得到了
lanname | lanowner | lanispl | lanpltrusted | lanplcallfoid | laninline | lanvalidator | lanacl
----------+----------+---------+--------------+---------------+-----------+--------------+--------
internal | 10 | f | f | 0 | 0 | 2246 |
c | 10 | f | f | 0 | 0 | 2247 |
sql | 10 | f | t | 0 | 0 | 2248 |
plpgsql | 10 | t | t | 12514 | 12515 | 12516 |
(4 rows)
Run Code Online (Sandbox Code Playgroud)
所以有一种语言,c
但它不是大写字母(不确定这是否有所不同).
我想知道为什么plr
扩展C
程序没有找到程序语言?
Erw*_*ter 12
您可能在PostgreSQL 9.2中遇到此更改(引用此处的发行说明):
在CREATE FUNCTION中不再强制使用小写程序语言名称(Robert Haas)
虽然不带引号的语言标识符仍然是小写的,但字符串和带引号的标识符不再被强制缩小.因此,例如CREATE FUNCTION ... LANGUAGE'C'将不再起作用; 它必须拼写为"c",或者更好地省略引号.
它也反映在手册中CREATE FUNCTION
LANG_NAME
该函数中实现语言的名称.可以是
SQL
,C
,internal
,用户定义的过程语言或名称.为了向后兼容,名称可以用单引号括起来.
至少从版本7.3(可能更长)开始,不鼓励引用语言名称,但显然老习惯很难.删除引号可以'C'
解决问题,到达:LANGUAGE c
或LANGUAGE C
.
PL/R
从项目页面来看,在这方面还没有为PostgreSQL 9.2做好准备.
Joe Conway留下了一个被删除的答案,因为它应该是一个评论.我将它粘贴到一般公众身上,无法看到已删除的答案:
我得到了消息,只是没有时间做新的PL/R版本.在12月之前查找它,但与此同时,上面提到的手动解决方法非常简单.
归档时间: |
|
查看次数: |
6359 次 |
最近记录: |