use*_*616 4 postgresql stored-procedures function
POSTGRESQL 8.4.3 - 我创建了一个具有此签名的函数
创建或替换函数 logcountforlasthour() 返回 SETOF 记录 AS
意识到我想把它改成这个
创建或替换函数 logcountforlasthour() 返回表(ip bigint, count bigint) 记录 AS
但是当我在查询工具中应用该更改时,它不被接受或者更确切地说它被接受,没有语法错误,但函数的文本尚未更改。即使我在编辑之间运行“DROP FUNCTION logcountforlasthour()”,旧语法也会回来
如果我编辑函数的主体,那很好,它会改变,但签名不会改变
我有什么遗漏的吗
谢谢
要替换现有函数的当前定义,请使用 CREATE OR REPLACE FUNCTION。不可能以这种方式更改函数的名称或参数类型(如果您尝试过,您实际上会创建一个新的、不同的函数)。此外,CREATE OR REPLACE FUNCTION 不允许您更改现有函数的返回类型。为此,您必须删除并重新创建该函数。(使用 OUT 参数时,这意味着您无法更改任何 OUT 参数的名称或类型,除非删除该函数。)
如果删除然后重新创建一个函数,则新函数与旧函数不是同一实体;您必须删除引用旧函数的现有规则、视图、触发器等。使用 CREATE OR REPLACE FUNCTION 更改函数定义,而不会破坏引用该函数的对象。此外,ALTER FUNCTION 可用于更改现有函数的大多数辅助属性。
创建函数的用户成为该函数的所有者。
并且还要注意:
... PostgreSQL 允许函数重载;也就是说,相同的名称可以用于多个不同的函数,只要它们具有不同的参数类型。
| 归档时间: |
|
| 查看次数: |
6809 次 |
| 最近记录: |