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

Oracle D2k फॉर्म में एक ब्लॉक से PL/SQL तालिका को पॉप्युलेट करना

Oracle D2k फ़ॉर्म में किसी ब्लॉक से PL/SQL तालिका को पॉप्युलेट करना

पीएल/एसक्यूएल टेबल को फॉर्म्स इंप्लिसिट पॉप्युलेटिंग बिल्ट-इन TABLE_FROM_BLOCK. का उपयोग करके ब्लॉक से पॉप्युलेट किया जा सकता है। यह बहुत ही आसान सुविधा स्पष्ट रूप से ब्लॉक के माध्यम से आपके लूप को समाप्त कर देती है। निम्नलिखित प्रक्रिया अवधारणा को दर्शाती है:
PROCEDURE populate_plsql_table(my_table1 my_table, cnt OUT NUMBER)

IS



/* Define a PL/SQL record with two fields code and name */



TYPE state_rec IS RECORD (code varhcar2(2), name varhcar2(30));



/* Define a PL/SQL table of the record defined above */



TYPE my_table IS TABLE OF state_rec INDEX BY BINARY_INTEGER;

my_table1 my_table;



/* Define a variable of type ITEMS_IN_BLOCK. ITEMS_IN_BLOCK is a

Forms-defined table */

Item_data ITEMS_IN_BLOCK;

Cnt NUMBER;

BEGIN

Item_data(1) := 'STATE_CODE';

item_data(2) := 'STATE_NAME';



/* The call to the Forms built-in TABLE_FROM_BLOCK retrieves the records

from the block and populates the my_table1 table of records */



TABLE_FROM_BLOCK(my_table1, 'STATE',1, ALL_RECORDS, item_data);

-- The SUCCESS or FAILURE of this built-in can be assessed

-- with FORM_SUCCESS, just like any other built-in



IF NOT FORM_SUCCESS THEN

RAISE FORM_TRIGGER_FAILURE;

END IF;

Cnt := my_table1.COUNT;

END populate_plsql_table;

इस तकनीक का उपयोग करने के लिए, इन चरणों का पालन करें:

  1. एक पीएल/एसक्यूएल रिकॉर्ड को परिभाषित करें जो इनपुट के रूप में पारित होने वाली रिकॉर्ड संरचना के बराबर हो। इस मामले में, यह state_rec . है और दो मदों का गठन करता है CODE और NAME STATE_CODE . के अनुरूप और STATE_NAME.

  2. पीएल/एसक्यूएल तालिका को चरण 1 में परिभाषित प्रकार के रिकॉर्ड की तालिका के रूप में परिभाषित करें। इस मामले में, यह my_table. है।

नोटOracle दस्तावेज़ PL/SQL तालिका को PLITBLM.TABLE_OF_ANY, प्रकार के रूप में परिभाषित करता है लेकिन पीएल/एसक्यूएल तालिका को जिस तरह से मैंने वर्णित किया है उसे परिभाषित करना अच्छी तरह से काम करता है।

  1. एक प्रकार का चर परिभाषित करें ITEMS_IN_BLOCK (VARCHAR2 . की एक तालिका ) और इसके अलग-अलग तत्वों को ब्लॉक आइटम नामों के नाम के रूप में सेट करें, जिनके मान चरण 1 में परिभाषित रिकॉर्ड प्रकार के तत्वों के रूप में आते हैं।

  2. अंतर्निहित कॉल करें TABLE_OF_ANY परिभाषित पीएल/एसक्यूएल तालिका के साथ, इनपुट ब्लॉक नाम, रिकॉर्ड संख्या शुरू करें, रिकॉर्ड संख्या समाप्त करें, और चरण 3 में परिभाषित चर पैरामीटर के रूप में पारित किया गया।

युक्तिब्लॉक में सभी रिकॉर्ड पास करने के लिए, 1 को प्रारंभिक रिकॉर्ड संख्या और स्थिरांक ALL_RECORDS के रूप में निर्दिष्ट करें अंतिम रिकॉर्ड संख्या के रूप में।

TABLE_FROM_BLOCK की सफलता या विफलता

TABLE_FROM_BLOCK . की सफलता या विफलता ज्यादातर मामलों में FORM_SUCCESS. . द्वारा फंसाया जा सकता है हालाँकि, अपवाद हैं। ऐसा ही एक अपवाद है त्रुटि FRM-40733:PL/SQL अंतर्निहित TABLE_FROM_BLOCK विफल। इस मामले में, यह FORM_SUCCESS, . में से एक नहीं है FORM_FAILURE, या FORM_FATAL. पर-त्रुटि अक्सर FORM_SUCCESS . का एक आसान विकल्प होता है TABLE_FROM_BLOCK . की सफलता या विफलता को ट्रैक करने के लिए और इस उदाहरण में भी, इस त्रुटि को पकड़ने में हमारी मदद करता है। पिछली त्रुटि तब होती है जब एक गैर-मौजूद ब्लॉक नाम पारित किया जाता है या रिकॉर्ड स्थिति शुरू करने या शुरू करने और समाप्त करने के लिए नकारात्मक मान पारित किए जाते हैं। युक्ति ध्यान देने योग्य एक अन्य महत्वपूर्ण बिंदु यह है कि TABLE_FROM_BLOCK ब्लॉक के माध्यम से परोक्ष रूप से लूप करता है, इसलिए POST-QUERY प्रत्येक रिकॉर्ड के लिए निष्पादित किया जाता है। हालांकि, यह मैनुअल लूपिंग से तेज है। 3,300 रिकॉर्ड्स के परिणाम सेट के लिए, यह विंडोज़ एनटी पर चलने वाले ओरेकल 8.0.5 के साथ मैनुअल लूपिंग की तुलना में 3.5 गुना तेज देखा गया।

  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 में संख्या स्वरूप तत्वों की सूची

  2. पीएल/एसक्यूएल का उपयोग करके ओरेकल में लॉग फाइल कैसे बनाएं?

  3. वसंत की संग्रहीत प्रक्रिया - प्रक्रिया से वापस आने वाले परिणाम हमेशा खाली होते हैं

  4. Oracle में, क्या कोई फ़ंक्शन है जो दो तिथियों के बीच अंतर की गणना करता है?

  5. त्रुटि ठीक करें "ORA-01789:क्वेरी ब्लॉक में परिणाम कॉलम की संख्या गलत है"