2012-04-24 15 views
6

मेरे पास कर्मचारी नामक एक टेबल है, जिसमें उसकी आईडी, नाम, फोन नंबर है। मैं अपने डेटाबेस के रूप में MySQL का उपयोग कर रहा हूँ। मैं इसके लिए जावा स्विंग का उपयोग कर रहा हूँ। मैं जावा का उपयोग कर नाम के साथ कर्मचारी तालिका खोज रहा हूं (मैंने अपने जावा पेज में like क्लॉज का उपयोग किया है)।संग्रहीत प्रक्रियाओं को परिणाम सेट वापस कर सकते हैं?

अब मुझे संग्रहीत प्रक्रियाओं में उस फ़ंक्शन को लागू करने की आवश्यकता है। क्या यह संभव है? और यदि यह संभव है तो हम जावा कोड में उस परिणाम को कैसे ले सकते हैं ??

अब मैं अपने संग्रहीत प्रक्रिया के रूप में इस प्रकार है

BEGIN 
    SELECT * FROM employee where empName like '%su%' 
END 

नमूना कोड की सराहना की जाएगी लिखा है .. धन्यवाद

उत्तर

0

हाँ आप कर सकते हैं। एक संग्रहीत प्रक्रिया कई परिणामों को भी वापस कर सकती है।

DELIMITER $$ -- recognized by mysql client but not phpmyadmin 

CREATE PROCEDURE prc_test() 
BEGIN 
     SELECT * 
     FROM employee 
     WHERE empName LIKE '%su%'; 
END; 
$$ 

DELIMITER ; 

CALL prc_test(); -- to call 
0

संग्रहीत प्रक्रिया को निष्पादित करते समय यह वास्तव में एकाधिक परिणामसेट ऑब्जेक्ट्स और/या कई कथन करता है तो अद्यतन संख्याओं को वापस कर सकता है।

सही परिणाम प्राप्त करने के लिए आप प्रक्रिया को निष्पादित करने के लिए CallableStatement का उपयोग करें और फिर getResultSet() या getUpdateCount() का उपयोग करें। संग्रहीत प्रो के परिणामों को स्थानांतरित करने के लिए कई परिणाम सेट/कथन के लिए आप getMoreResults() पर कॉल करते हैं।

इस तरह के एक साधारण मामले के लिए आपको केवल getResultSet() पर कॉल करने और इसे संसाधित करने की आवश्यकता होनी चाहिए।

1

पहली बात, आप msql प्रक्रिया है कि LIKE के लिए पैरामीटर भेजता लिखना चाहिए है

CREATE PROCEDURE simpleproc (param1 CHAR(20)) 
BEGIN 
SELECT * FROM employee where empName like param1; 
END 

फिर जावा कार्यक्रम से आप प्रक्रिया का उपयोग करने के लिए इस कोड का उपयोग कर सकते,

CallableStatement cstmt = con.prepareCall("{call simpleproc(?)}"); 
cstmt.setString(1, "%su%"); 
ResultSet rs = cstmt.executeQuery(); 
संबंधित मुद्दे