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

तत्काल क्रियान्वित करते समय अमान्य वर्ण त्रुटि

आपके पास वहां कोई स्ट्रिंग नहीं है (मुझे लगता है str कुछ विवरण के चरित्र के रूप में घोषित किया गया है)। यदि आप एक स्ट्रिंग सम्मिलित करना चाहते हैं तो आपको अतिरिक्त उद्धरणों की आवश्यकता है अन्यथा इस उदाहरण में इसे एक कॉलम के रूप में व्याख्यायित किया जाएगा। कुछ इस तरह:

begin
   ...
exception
   when others then
     sqltext2 := 'insert into error_table_shree select '''||str||''' from dual';
     execute immediate sqltext2;
end;
commit;

कृपया ध्यान दें कि मैंने आपकी स्ट्रिंग के अंत से सेमी-कोलन हटा दिया है; यह आवश्यक नहीं है (और शायद आपकी त्रुटि का वास्तविक कारण है)।

यह भी ध्यान देने योग्य है कि यह थोड़ा सा है SQL- इंजेक्शन वाला ... आपको बाइंड वैरिएबल संयोजन के बजाय; यह सब दस्तावेज़ीकरण में वर्णित है :

begin
   ...
exception
   when others then
     execute immediate 'insert into error_table_shree select :1 from dual' 
                  using str;
end;
commit;

हालाँकि, इस संदर्भ में गतिशील SQL का उपयोग करने की कोई आवश्यकता नहीं है; आप केवल परिवर्तनीय मान सम्मिलित कर सकते हैं:

begin
   ...
exception
   when others then
     insert into error_table_shree values (str);
end;
commit;

अंत में, मैं आपके COMMIT . के बारे में थोड़ा चिंतित हूं; इस तरह से किसी त्रुटि को संभालने के बाद प्रतिबद्ध होना असामान्य है। अधिक संदर्भ के बिना निश्चित होना असंभव है, लेकिन स्वायत्त लेन-देन



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अमान्य CREATE कमांड जब इसे किसी अन्य कमांड के साथ प्रयोग किया जाता है

  2. Oracle संग्रहित प्रक्रिया में त्रुटि कोड का वापसी संदेश

  3. SQL - दायां कोष्ठक गुम है

  4. Oracle के DBA_DEPENDENCIES दृश्य की पुनरावर्ती सूची सूची

  5. PHP:oci_bind_by_name और टाइमस्टैम्प फ़ील्ड परिणाम ORA-01461 में:केवल एक लंबे कॉलम में सम्मिलित करने के लिए एक लंबा मान बाँध सकते हैं