मुझे उम्मीद है कि कोई मदद करने में सक्षम होगा। मैंने अपना पहला संग्रहित प्रोडक्शन बनाया है (कुछ भी नहीं फैंसी) हालांकि मैं किसी समस्या में चल रहा हूं।MYSQL - स्टोरेज प्रक्रिया को कम करने योग्य इनपुट के रूप में कॉमा सेपरेटेड स्ट्रिंग का उपयोग
मैं इसे एक स्ट्रिंग इनपुट जैसे 1,2,3,4,5 तो यह एक साधारण SELECT * FROM [TABLE] WHERE EAN IN (VAR);
तो संग्रहीत proc इस तरह दिखता करता देना चाहता हूँ:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE PROCEDURE `moments`.`new_procedure`(IN var1 VARCHAR(255))
BEGIN
SELECT * FROM moments.PRODUCT WHERE EAN IN (var1);
END
इम बजे इस तरह है जैसे कि यह निष्पादित करने के लिए कोशिश कर रहा है:
वर्क्स
call moments.new_procedure('5045318357397')
काम नहीं करता
call moments.new_procedure('5045318357397,5045318357427');
यह कार्यान्वित लेकिन किसी भी परिणाम वापस नहीं ला नहीं करता है। यह एक स्ट्रिंग के रूप दूसरा बयान classing है इसलिए इसकी यह कर:
select * from moments.PRODUCT WHERE EAN IN ('5045318357397,5045318357427')
और नहीं इस:
select * from moments.PRODUCT WHERE EAN IN ('5045318357397','5045318357427')
कैसे मैं निष्पादित क्वेरी में इनपुट स्वरूप का यह एक लेने के लिए प्राप्त करने के लिए है एक इनपुट के रूप में अल्पविराम अलग स्ट्रिंग?
यह संग्रहीत प्रो के अंदर पूरी तरह से काम करता है, धन्यवाद। यह भी है कि मैं इसे कास्ट आयरन एप्लिकेशन से कैसे बुलाऊंगा, जो एक अतिरिक्त बोनस है। – MMKD
यह काम करता है, लेकिन यह बहुत कुशल नहीं है क्योंकि इसे तालिका से सभी पंक्तियों को लाने की आवश्यकता है, फिर प्रत्येक पंक्ति की तुलना अपने सेट पर करें, जो बदले में अल्पविराम से अलग सूची के माध्यम से लूप करना होगा ताकि यह जांच सके कि यह मेल खाता है ... यदि आपका # कॉलम कम है, तो यह ठीक है अन्यथा आपको बल्लेबाज का रास्ता मिलना चाहिए – Populus
@ पॉपुलस टिप्पणी को और अधिक उतारने की जरूरत है - FIND_IN_SET किसी भी तालिका सूचकांक का उपयोग नहीं करता है, इसलिए इस तरह से उपयोग होने पर संभावित रूप से एक बड़ी प्रदर्शन समस्या है –