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

एक्सेल वीबीए से ओरेकल पीएल एसक्यूएल फ़ंक्शन को कॉल करना

तारीखों के साथ आपका काम पूरी तरह गलत है। सटीक स्थान बताना कठिन है क्योंकि कुछ संभावित स्थान हैं। मैं समझाता हूँ कि इस कोड में क्या गलत है (यह आपके "लाइन 89" स्टेटमेंट से लिया गया है):

... FP_BASIC_BD."DATE">=TO_CHAR(TRUNC(TO_DATE(GTT_DWM_STATS.CLOSINGDATE,'DD-MON-YY'), 'IW'),'DD-MON-YY') ...

GTT_DWM_STATS.CLOSINGDATE दिनांक स्वरूप है (आपके डीडीएल विवरण के अनुसार)। लेकिन to_date फ़ंक्शन पहले पैरामीटर के रूप में एक स्ट्रिंग लेता है। इस स्थान पर, Oracle निम्न कार्य करता है:

  • अनिवार्य रूप से दिनांक को स्ट्रिंग में परिवर्तित करता है (सत्र के प्रारूप का उपयोग करके)
  • फिर to_date फ़ंक्शन इसे वापस एक तारीख में बदलने की कोशिश करता है, स्ट्रिंग को 'DD-MON-YY' में लिखी गई तारीख के रूप में मानता है। प्रारूप
  • फिर trunc तारीख को छोटा करता है
  • फिर to_char इसे फिर से एक स्ट्रिंग में परिवर्तित करता है, और आप अपनी स्ट्रिंग की तुलना दिनांक (मुझे लगता है) FP_BASIC_BD."DATE" से करते हैं।
  • अगर FP_BASIC_BD."DATE" एक तिथि है, Oracle परोक्ष रूप से अभिव्यक्ति के परिणाम को समान चिह्न के दाईं ओर फिर से एक तिथि में परिवर्तित करता है
  • या अगर FP_BASIC_BD."DATE" एक स्ट्रिंग है, Oracle स्ट्रिंग तुलना के नियमों के अनुसार स्ट्रिंग्स की तुलना करता है।

सभी अनावश्यक परिवर्तनों से छुटकारा पाने के लिए आपको यहां क्या चाहिए:

FP_BASIC_BD."DATE" >= TRUNC(GTT_DWM_STATS.CLOSINGDATE, 'IW')

और उसके बाद आपको अन्य सभी स्टेटमेंट को ध्यान से देखना होगा जहां आप तारीखों के साथ काम कर रहे हैं। यदि कोई फ़ंक्शन इनपुट पैरामीटर के रूप में दिनांक लेता है, तो आपको एक तिथि पास करनी होगी, यदि कोई फ़ंक्शन एक स्ट्रिंग लेता है - एक स्ट्रिंग पास करें। तुलना के साथ भी ऐसा ही है:एक स्ट्रिंग की तुलना एक स्ट्रिंग से करें और एक तिथि की एक तिथि के साथ तुलना करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएल/एसक्यूएल में अंडरस्कोर से बचें

  2. Oracle डेटाबेस - ORA-01460 - अनुपयुक्त या अनुचित रूपांतरण का अनुरोध किया गया

  3. ओरेकल स्वत:पूर्ण ड्रॉपडाउन के लिए टॉड

  4. Oracle अनुक्रम कैशिंग

  5. एक ट्रिगर बनाएं जो एक टेबल पर कॉलम अपडेट करता है जब दूसरी टेबल में कॉलम अपडेट होता है