Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ORA-01002:अनुक्रम C++ से बाहर लाएं

आपका फ़ेच विफल हो रहा है क्योंकि उस बिंदु से पहले खुले, घोषित और तैयार सभी विफल हो गए, लेकिन आपने उनमें से किसी भी त्रुटि की जांच नहीं की। यदि आपने किया तो आपको एक ORA-00911: invalid character मिलेगा त्रुटि, इस वजह से:

    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");

बयान जो बनाता है वह है

select supplierNumber, supplierName from supplier where supplierNumber < > 1;

लेकिन फिर आप करते हैं:

exec sql PREPARE S1 FROM :sql_statement;

डायनेमिक SQL और JDBC कॉल की तरह, यह तैयारी केवल एक ही स्टेटमेंट ले सकती है। आपकी निर्मित स्ट्रिंग के अंत में अर्धविराम एक कथन विभाजक है जिसका इस संदर्भ में कोई अर्थ नहीं है, और जहां तक ​​पार्सर का संबंध है, यह अमान्य है।

तो बस उस अर्धविराम को हटा दें:

    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1");

और प्रत्येक exec sql . के बाद एक त्रुटि जांच जोड़ें ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉलम द्वारा Oracle SQL समूह गिनती के साथ लेकिन केवल अगर कॉलम शून्य या 0 . है

  2. एनवीएल हमेशा दूसरे पैरामीटर का मूल्यांकन क्यों करता है

  3. व्यावसायिक तर्क:डेटाबेस या अनुप्रयोग परत

  4. plsql में प्रक्रिया निकाय के अंदर कर्सर कैसे बनाएं

  5. क्या बाएं बाहरी जुड़ाव की तुलना में एंटी-जॉइन अधिक कुशल है?