MySQL-এ CALL দিয়ে প্রোসিজার চালানোর পর SELECT
MySQL-এ স্টোরড প্রোসিজারকে FROM ক্লজে ব্যবহার করা যায় না (SELECT * FROM procedure() অবৈধ)। সঠিক পদ্ধতি: প্রথমে CALL করুন, তারপর আলাদা SELECT কোয়ারি চালান।
উদাহরণ সহ ব্যাখ্যা
টেবিল তৈরি:
mysql> CREATE TABLE DemoTable2 (
-> CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CustomerName VARCHAR(100),
-> ShippingDateTime DATETIME
-> );
স্টোরড প্রোসিজার তৈরি (ইনসার্ট করার জন্য):
mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_information(Name VARCHAR(100), shippingtime DATETIME)
-> BEGIN
-> INSERT INTO DemoTable2(CustomerName, ShippingDateTime) VALUES(Name, shippingtime);
-> END //
mysql> DELIMITER ;
প্রোসিজার কল করি (NOW() দিয়ে বর্তমান সময়):
mysql> CALL insert_information('Chris', NOW());
তারপর ডেটা দেখি:
mysql> SELECT * FROM DemoTable2;
+------------+--------------+---------------------+ | CustomerId | CustomerName | ShippingDateTime | +------------+--------------+---------------------+ | 1 | Chris | 2019-04-08 15:03:07 | +------------+--------------+---------------------+
দ্রষ্টব্য: প্রোসিজার যদি SELECT রিটার্ন করে (যেমন SELECT * FROM tbl), তবে CALL-এর পর সেটি আউটপুট হিসেবে দেখাবে। কিন্তু FROM CALL proc() লিখা যায় না।