इस संस्करण में:
SELECT COUNT(*)
INTO isFound
FROM MyTable
WHERE USERNAME = userName
AND ROWNUM = 1;
... तालिका का USERNAME
कॉलम की तुलना खुद से की जा रही है, इसलिए यह हमेशा मेल खाएगा। आप इसकी तुलना स्थानीय चर से नहीं कर रहे हैं। अगर आप ऐसा करना चाहते हैं, तो आपको वेरिएबल को कॉलम में एक अलग नाम देना होगा:
declare
isFound NUMBER;
localUserName VARCHAR2(30);
begin
isFound := 0;
userName := 'aaaaaa';
SELECT COUNT(*)
INTO isFound
FROM MyTable
WHERE USERNAME = localUserName
AND ROWNUM = 1;
IF isFound > 0 THEN
dbms_output.put_line('Found');
ELSE
dbms_output.put_line('Not found');
END IF;
end;
या जैसा कि डेविड एल्ड्रिज सुझाव देते हैं, स्थानीय चर को तालिका कॉलम से अलग करने के लिए एक लेबल का उपयोग करें:
<<local>>
declare
isFound NUMBER;
userName MyTable.USERNAME%TYPE;
begin
isFound := 0;
userName := 'aaaaaa';
SELECT COUNT(*)
INTO isFound
FROM MyTable
WHERE USERNAME = local.userName
AND ROWNUM = 1;
...
आप उस दृष्टिकोण का उपयोग नामित ब्लॉकों के साथ भी कर सकते हैं; यदि यह किसी फ़ंक्शन के अंदर था तो आप स्थानीय चर को function_name.variable_name
के रूप में संदर्भित कर सकते हैं . चूंकि यह एक अनाम ब्लॉक है, इसलिए लेबल function_name
. जैसी ही भूमिका निभाता है अनिवार्य रूप से।
दस्तावेज़ में नाम समाधान के बारे में एक अनुभाग है। ।