কীভাবে ফাংশন তৈরি করা যায় যা কিছুই দেয় না


107

আমি সাথে একটি ফাংশন লিখতে চান pl/pgsql। আমি পোস্টগ্র্রেস ইন্টারন্যাচার ম্যানেজার ভি 3 ব্যবহার করছি এবং একটি ফাংশন তৈরি করতে শেল ব্যবহার করছি , তবে শেলের মধ্যে আমাকে অবশ্যই রিটার্নের ধরণ নির্ধারণ করতে হবে। আমি যদি রিটার্নের ধরণটি সংজ্ঞায়িত না করি তবে আমি কোনও ফাংশন তৈরি করতে সক্ষম নই।

রিটার্ন রেজাল্ট ছাড়াই কোনও ফাংশন কীভাবে তৈরি করা যায়, যেমন কোনও ফাংশন যা একটি নতুন টেবিল তৈরি করে?

উত্তর:


167

RETURNS voidনীচের মত ব্যবহার করুন :

CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$
    #variable_conflict use_variable
    DECLARE
        curtime timestamp := now();
    BEGIN
        UPDATE users SET last_modified = curtime, comment = comment
          WHERE users.id = id;
    END;
$$ LANGUAGE plpgsql;

18
অন্যান্য পাঠকদের জন্য, দ্রষ্টব্যটির উত্তরটির বাকি #variable_conflictঅংশগুলির সাথে কোনও সম্পর্ক নেই । এটি একটি উদাহরণ ফাংশনের কেবলমাত্র একটি অংশ; শুধুমাত্র গুরুত্বপূর্ণ বিট হয় RETURNS void। এছাড়াও, দুর্দান্ত, আমি জানতাম না পিএল / পিজিএসকিউএলএর প্রগমাস রয়েছে।
ক্রেগ রিঞ্জার

এখানে একটি সম্পর্কিত কেস তৈরির ব্যবহার রয়েছে #variable_conflict: dba.stackexchange.com/a/105828/3684
এরউইন ব্র্যান্ডসটেটার

1
অন্য ফাংশনের অভ্যন্তরে আমি এই ফাংশনটি কীভাবে ব্যবহার করব? যদি আমি ছাড়া চেষ্টা SELECT * FROM stamp_user(...), তারপর আমি পেতে error: query has no destination for result dataএবং যদি আমি শুধু লিখতে stamp_user(...)তারপর আমি পেতে syntax error
পীর

0

আপনি যেমন পদ্ধতি ব্যবহার করতে পারেন তবুও কার্যাদি সর্বদা কিছু ফিরিয়ে আনতে হবে

do $$

এবং স্বাভাবিক ফাংশন দিয়ে শুরু করুন

declare
...

তবে আপনি যদি এখনও কোনও ফাংশন করতে চান তবে রিটার্নের পরে কেবল শূন্যতা যুক্ত করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.