Tôi điên hay chỉ đơn giản câm?"chức năng không tồn tại", nhưng tôi thực sự nghĩ rằng nó
dev=# \df abuse_resolve
List of functions
-[ RECORD 1 ]-------+------------------------------------------------------------------------------------------------------------------------------------
Schema | public
Name | abuse_resolve
Result data type | record
Argument data types | INOUT __abuse_id bigint, OUT __msg character varying
Type | normal
dev=# select abuse_resolve('30'::bigint);
ERROR: function abuse_resolve(bigint) does not exist
LINE 1: select abuse_resolve('30'::bigint);
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Đây là CREATE FUNCTION
, tôi đã bỏ qua thịt của mã này, nhưng điều đó sẽ không thích hợp:
CREATE OR REPLACE FUNCTION abuse_resolve(INOUT __abuse_id bigint, OUT __msg character varying) RETURNS record AS $_$
DECLARE
__abuse_status VARCHAR;
BEGIN
...snip...
UPDATE abuse SET abuse_status = __abuse_status,
edate = now(),
closed_on = now()
WHERE abuse_id = __abuse_id;
__msg = 'SUCCESS';
END;
$_$ LANGUAGE plpgsql SECURITY DEFINER;
Và chỉ dành riêng cho tiếng cười khúc khích:
GRANT ALL ON FUNCTION abuse_resolve(INOUT __abuse_id, OUT __msg character varying) TO PUBLIC;
GRANT ALL ON FUNCTION abuse_resolve(INOUT __abuse_id, OUT __msg character varying) TO myuser;
chức năng đó có vẻ như nó có tồn tại. Tôi có thể bỏ lỡ điều gì?
Điều này được giải quyết, câu trả lời là: Tôi câm. Tôi đã xác định không chính xác các đối số ban đầu, nhưng mã của tôi đã sử dụng đúng đối số. Có thêm bigint
không có doanh nghiệp ở đó.
Bạn có thể gửi 'tạo tuyên bố function'? –
Bạn đã thực hiện cả hai trong cùng một phiên? Cùng một người dùng? Cùng search_path? –
Có, chỉ có một người dùng. search_path được đặt thành công khai, SHOW xác nhận điều này. Tôi sẽ chỉnh sửa với CREATE FUNCTION – echtish