মাইএসকিউএল একটি সঞ্চিত পদ্ধতি থেকে ফলাফল সেট করে কীভাবে ফিরে আসে?


16

আমি একটি ওয়েব অ্যাপ্লিকেশন ব্যবহারের জন্য সঞ্চিত পদ্ধতিতে মাথা পেতে চেষ্টা করছি। আমার কাছে মনে হয় যে মাইএসকিউএল সঞ্চিত পদ্ধতিতে সর্বশেষ বিবৃতিটি যা মনে হচ্ছে তা প্রক্রিয়াটির ফলাফল সেট হিসাবে বিবেচিত হবে। দুর্ভাগ্যক্রমে যদিও, এটি মাইএসকিউএল ডক্সে উল্লেখ রয়েছে যা বলে যে একটি পদ্ধতি একাধিক ফলাফল সেটগুলি ফিরিয়ে দিতে পারে। এই আচরণটি কীভাবে ট্রিগার হয়? আমি কীভাবে মাইএসকিউএল সার্ভারকে বলতে পারি যে আমি স্পষ্টভাবে কেবল একটি ফলাফলের ফলাফল চাই?

(উদাহরণস্বরূপ, আমার কাছে একটি কোয়েরি রয়েছে যা একটি নির্বাচন এবং কয়েকটি সন্নিবেশ করায় clientsোকানোগুলি সম্পর্কে আমি ক্লায়েন্টকে বলতে চাই না, তবে আমি ক্লায়েন্টকে সেলেকের ফলাফল সেটটি দিতে চাই ....)

উত্তর:


17

সারণী বা ভেরিয়েবলের মধ্যে সন্নিবেশ না করে এমন প্রতিটি নির্বাচনী বিবৃতি একটি ফলাফল সেট তৈরি করবে।

যদি আপনি চান যে আপনার সঞ্চিত পদ্ধতিটি কেবলমাত্র একটি ফলাফলের সেটটি ফেরত আসতে পারে তবে নিশ্চিত হয়ে নিন যে আপনার কাছে কেবল একটি নির্বাচনী বিবৃতি রয়েছে। আপনার যদি অন্য নির্বাচনী বিবৃতি থাকে তবে তা নিশ্চিত করুন যে সেগুলি ফলাফলটি একটি টেবিল বা ভেরিয়েবলের মধ্যে প্রবেশ করিয়েছে।

আপডেট
এখানে সঞ্চিত পদ্ধতির উদাহরণ রয়েছে।

এই সঞ্চিত পদ্ধতিতে একটি ফলাফল সেট ফিরে আসবে:

DELIMITER ;;
CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name()
BEGIN
    DECLARE local_variable_name INT;

    SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name;

    SELECT * FROM table_1;
END;;
DELIMITER ;

এই সঞ্চিত পদ্ধতি দুটি ফলাফল সেট ফিরে আসবে:

DELIMITER ;;
CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name()
BEGIN
    DECLARE local_variable_name INT;

    SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name;

    SELECT * FROM table_1;

    SELECT * FROM table_2;
END;;
DELIMITER ;

আহ, সুতরাং যদি এটি একটি টেবিল বা পরিবর্তনশীল যায়, ফলস্বরূপ এটি অন্তর্ভুক্ত হয় না? কীভাবে একজন এটি অ্যাক্সেস করতে পারে; উদাহরণস্বরূপ নির্বাচন করুন?
বিলি ওনিল

হ্যাঁ প্রথম প্রশ্ন। আমি আপনার দ্বিতীয় প্রশ্নে পরিষ্কার না। যদি আমি সঞ্চিত পদ্ধতি মধ্যে থেকে একটি স্থানীয় পরিবর্তনশীল মধ্যে একটি মান সংরক্ষণ করতে চান, আমি ভালো কিছু সঞ্চালন করুন: SELECT column_name LIMIT 1 INTO local_variable_name;
dabest1

নমুনা ক্যোয়ারী উপরে হওয়া উচিত ছিল: SELECT column_name FROM table LIMIT 1 INTO local_variable_name;
dabest1

যদি আমি অন্য সঞ্চিত পদ্ধতি থেকে কল stored_procedure_name পর পরিবর্তনশীল পেতে চাই, আমি ফলাফলের = কল stored_procedure_name () ;, কিভাবে এটা সমাধান করতে সেট করতে পারে না যদি আমি কার্সার, কল get_info_user_visitstatistics জন্য ডিক্লেয়ার c_dept কার্সার () বাক্যগঠন ত্রুটি ব্যবহার করবেন?
অমিতাভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.