नीचे दिया गया कोड एक से अधिक पंक्ति वापस कर सकता है। sql%rowcount
लाए गए पंक्तियों की संख्या वापस कर देगा?क्या चयन के लिए एसक्यूएल% पंक्ति गणना का उपयोग करना संभव है?
select * from emp where empname = 'Justin' and dept='IT'
if sql%rowcount>0
...
यह मेरा नमूना proc है; क्या मैं सही तरीके से sql%rowcount
का उपयोग कर रहा हूं?
CREATE PROCEDURE Procn(in_Hid IN VARCHAR2,outInststatus OUT VARCHAR2,outSockid IN NUMBER,outport OUT VARCHAR2,outIP OUT VARCHAR2,outretvalue OUT NUMBER)
AS
BEGIN
select INST_STATUS into outInststatus from TINST_child where INST_ID = in_Hid and INST_STATUS = 'Y';
if outInststatus = 'Y' then
select PORT_NUMBER,STATIC_IP into outport,outIP from TINST where INST_ID = in_Hid and IP_PORT_STATUS = 'Y';
if sql%rowcount >= 1 then
select SOCK_ID into outSockid from TINST where PORT_NUMBER = outport AND STATIC_IP = outIP;
outretvalue := 0;
else
outretvalue := -12;
end if;
EXCEPTION
WHEN NO_DATA_FOUND THEN
outretvalue := -13;
end if;
END;
यदि यह पीएल/एसक्यूएल टैग किए गए हैं तो आपको कुछ में चयन करने की आवश्यकता है, यदि स्थिति गिनती शून्य हो, तो 'अगर आप पंक्ति संख्या शून्य थी, या' बहुत अधिक पंक्तियां 'अगर यह 1 से अधिक थी तो आपको' no_data_found' अपवाद 'मिलेगा , इसलिए आप इससे निपटने के लिए अपवाद हैंडलिंग का उपयोग कर सकते हैं; या एक स्पष्ट कर्सर का उपयोग कर रहे हैं। मुझे लगता है कि अधिक संदर्भ की जरूरत है। –
@alex i hav ने अपना कोड अपडेट किया है मैंने एक नमूना कोड पोस्ट किया है, क्या मैं सही तरीके से एसक्यूएल% गिनती का उपयोग कर रहा हूं? – user1
नहीं; 'चुनें ... में' (जब तक कि आपके पास 'कोडो सुझाव के रूप में' थोक संग्रह नहीं होता है) हमेशा एक पंक्ति को वापस कर देगा, या अपवाद उठाएगा। कल्पना कीजिए कि दो मिलान पंक्तियां थीं; 'static_ip' के लिए दो मानों में से कौन सा 'आउटआईपी' होगा? आपका कोड तब तक काम करेगा जब तक एक पंक्ति हो, लेकिन जब ऐसा न हो तो असफल हो जाएंगे। क्या यह एक से अधिक पंक्ति होने के लिए * वैध * है, और यदि वहां है तो क्या होना चाहिए? –