क्या मैं पागल हूं या सिर्फ सादा गूंगा हूं?"फ़ंक्शन मौजूद नहीं है," लेकिन मुझे सच में लगता है कि यह
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.
यहाँ CREATE FUNCTION
है, मैं कोड का मांस हटा दिया है, लेकिन वह अप्रासंगिक होना चाहिए:
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;
और बस गिगल्स के लिए:
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;
कि समारोह की तरह लगता है वह मौजूद है। मैं क्या लापता हो सकता है?
यह हल हो गया है, जवाब है: मैं गूंगा हूँ। मैंने मूल रूप से तर्कों को अनुचित रूप से परिभाषित किया था, लेकिन मेरा कोड सही लोगों का उपयोग कर रहा था। एक अतिरिक्त bigint
था जिसमें कोई व्यवसाय नहीं था।
निर्दिष्ट फोन में स्थापित करने के लिए सलाह देते हैं? –
क्या आपने एक ही सत्र में दोनों को निष्पादित किया था? वही उपयोगकर्ता? वही search_path? –
हां, केवल एक उपयोगकर्ता है। search_path सार्वजनिक पर सेट है, दिखाएं यह पुष्टि करता है। मैं क्रिएट फंक्शन – echtish