आरपीजी में एम्बेडेड एसक्यूएल के साथ काम करते समय, आप अक्सर अपने परिणाम में सभी पंक्तियों को संसाधित करने के लिए कर्सर और dow
-loop के साथ समाप्त होते हैं। लूप में स्थिति SQLCOD
और/या SQLSTT
पर किसी भी तरह निर्भर है, SQLRPGLE-प्रोग्राम में कुछ वैश्विक रूप से उपलब्ध चर?आईएलई आरपीजी में एसक्यूएल मिली स्थिति की जांच करने का सही तरीका क्या है?
लेकिन इन मानों की जांच करने का सही तरीका क्या है? कुछ सुझाव SQLCOD = 0
अन्य not (SQLCOD = +100 or SQLSTT = '02000')
। कोई भी सभी चेतावनियों पर विफल रहता है, दूसरा कुछ त्रुटियों में विफल नहीं होता है, इसलिए मैं संतुष्ट नहीं हूं।
इसे समझने के लिए क्या मैं कुछ कोड के साथ कार्य करें:
Pmain B
D PI
Dmy_ds E DS extname(SOME_TABLE)
D qualified
/free
exec sql
DECLARE cur CURSOR FOR
SELECT *
FROM some_table;
exec sql
OPEN cur;
exec sql
FETCH cur
INTO :my_ds;
dow sql_found();
exec sql
FETCH cur
INTO :my_ds;
enddo;
exec sql
CLOSE cur;
/end-free
Pmain E
Psql_found B
D PI N
/free
// insert return statement here...
/end-free
Psql_found E
मैं यहाँ सही वापसी कथन के लिए देख रहा हूँ, कि मुझे कोई त्रुटि तब होती है, तो सभी पंक्तियों के माध्यम से जाना बनाने के लिए और मुझे छोड़ जब एक त्रुटि देता है जाएगा होता है। त्रुटियों की जांच करने के लिए कुछ सभ्य तरीके से बोनस अंक।
मामूली नोट ... यह है पूरी तरह से सच नहीं है कि SQLSTATE कक्षाओं के लिए "कुछ और त्रुटि है"। केवल डीबी 2 (और त्रुटियों के रूप में परिभाषित) के लिए आरक्षित कक्षाएं आवश्यक रूप से त्रुटियां हैं। उदाहरण के लिए 'K1001' सिग्नलिंग केवल एक त्रुटि होगी यदि एप्लिकेशन ने इसे एक त्रुटि के रूप में संभाला है। – user2338816