2009-06-04 12 views
9

मैं ओरेकल डेटाबेस के साथ एक एएसपी.NET प्रोजेक्ट पर काम कर रहा हूं। हम संग्रहीत प्रक्रियाओं को जोड़ने/प्रबंधित करने के लिए TOAD का उपयोग कर रहे हैं - और सामान्य रूप से मुझे टॉड और ओरेकल पसंद है। एक चीज जिसे मैंने निराशाजनक पाया है, ओरेकल संग्रहीत प्रक्रिया, जैसे SQL सर्वर के "exec [SP_NAME] पैराम 1, पैराम 2, पैरामैन" वाक्यविन्यास का परीक्षण करने का एक आसान तरीका ढूंढ रहा है।ओरेकल संग्रहीत प्रक्रिया का परीक्षण करने का सबसे आसान तरीका

हमारे सभी संग्रहीत प्रक्रियाओं आउटपुट रेफ कर्सर। यहां एक संग्रहित प्रक्रिया का एक उदाहरण दिया गया है:

 
CREATE OR REPLACE PROCEDURE APP_DB1.GET_JOB 
(
    p_JOB_ID IN JOB.JOB_ID%type, 
    outCursor OUT MYGEN.sqlcur 
) 
IS 
BEGIN 
    OPEN outCursor FOR 
    SELECT * 
    FROM JOB 
    WHERE JOB_ID = p_JOB_ID; 
END GET_JOB; 
/

कोई सुझाव?

उत्तर

13

आपको बस एक स्क्रिप्ट चाहिए जो आपकी संग्रहीत प्रक्रिया को कॉल करे और रेफ कर्सर आउटपुट के लिए बाइंड के ग्रिड में इसे प्रदर्शित करने के लिए बाध्य चर है खिड़की।

DECLARE 
type result_set is ref cursor; 
BEGIN 
APP_DB1.GET_JOB(1, :result_set); 
END; 

जब आप तो इस मेंढक 'बाँध' के लिए संकेत देगा चलाएँ: result_set, बस प्रकार की सूची से रेफरी कर्सर चयन करें और फिर परिणाम ग्रिड में प्रदर्शित करेगा। यह चाल है कि आप अपने संग्रहित प्रक्रिया को कॉल करने वाले 'क्लाइंट' के रूप में सोचें और परिणाम को संग्रहीत करने के लिए आपको अपने स्वयं के रेफ कर्सर की आवश्यकता है।

+0

हालांकि मैं एक पंक्ति कथन की उम्मीद कर रहा था, मैंने देखा सबसे आसान तरीका। धन्यवाद। – Josh

+0

इस टिप ने वास्तव में मेरी मदद की। धन्यवाद! – NickSuperb

1

तुम सिर्फ एक तरह से सपा को लागू करने के लिए देख रहे हैं, तो ओरेकल तरीका है:

begin 
    sp_name(....); 
end; 

मैं टॉड का उपयोग नहीं करते हैं, लेकिन आप उसे निष्पादित कर एसक्यूएल खिड़की में डाल करने में सक्षम होना चाहिए यह। (: RC कार्य आईडी आप क्वेरी करना चाहते हैं,)

एसक्यूएल> प्रिंट rc

+0

मैंने प्रश्न अपडेट किया ताकि आप देख सकें कि हम आउटपुट के लिए रेफ कर्सर का उपयोग करते हैं। इसके कारण हम उपरोक्त आपके उदाहरण का उपयोग नहीं कर सकते हैं। – Josh

1

sqplus में आप वाक्य रचना

एसक्यूएल> वर rc refcursor

एसक्यूएल> कार्यकारी APP_DB1.GET_JOB उपयोग कर सकते हैं

ऐसा करना चाहिए। पहली पंक्ति एक बाध्य चर परिभाषित करता है। आप जॉब आईडी के लिए एक वैरिएबल भी परिभाषित कर सकते हैं, या बस इसे टाइप करें।

+0

मुझे SQL सर्वर की तरह ग्रिड में परिणाम सेट की आवश्यकता है, इसलिए मैं TOAD में करने का एक तरीका ढूंढ रहा हूं। – Josh

0

TOAD परिणामस्वरूप ग्रिड में परिणाम रसेल से नमूना स्क्रिप्ट के साथ ठीक है। स्क्रिप्ट के रूप में चलाएं।

variable P_CUR refcursor; 
exec PACK.GETEXECUTION ('9f363e49-88c1-4295-b61e-60812d620d7e', '6', :P_CUR); 
print P_CUR; 

धन्यवाद!

संबंधित मुद्दे