एमएस एसक्यूएल सर्वर में यदि मैं एक संग्रहीत प्रक्रिया से परिणामों की जांच करना चाहता हूं तो मैं प्रबंधन स्टूडियो में निम्नलिखित निष्पादित कर सकता हूं।आप ओरेकल प्रक्रिया से अच्छी तरह से स्वरूपित परिणाम कैसे प्राप्त करते हैं जो एक संदर्भ कर्सर देता है?
--SQL SERVER WAY
exec sp_GetQuestions('OMG Ponies')
परिणाम फलक में आउटपुट इस तरह दिख सकता है।
ID Title ViewCount Votes
----- ------------------------------------------------- ---------- --------
2165 Indexed View vs Indexes on Table 491 2
5068 SQL Server equivalent to Oracle’s NULLS FIRST 524 3
1261 Benefits Of Using SQL Ordinal Position Notation? 377 2
(3 row(s) affected)
लूप या प्रिंट स्टेटमेंट लिखने की कोई आवश्यकता नहीं है।
एक ही बात Oracle में मैं जैसे
ID|Title|ViewCount|Votes
2165|Indexed View vs Indexes on Table|491|2
5068|SQL Server equivalent to Oracle’s NULLS FIRST|524|3
1261|Benefits Of Using SQL Ordinal Position Notation?|377|2
Record Count: 3
तो SQL संस्करण 1 लाइन है और ओरेकल 18 है SQL डेवलपर में निम्नलिखित गुमनाम ब्लॉक पर अमल हो सकता है
--ORACLE WAY
DECLARE
OUTPUT MYPACKAGE.refcur_question;
R_OUTPUT MYPACKAGE.r_question;
USER VARCHAR2(20);
BEGIN
dbms_output.enable(10000000);
USER:= 'OMG Ponies';
recordCount := 0;
MYPACKAGE.GETQUESTIONS(p_OUTPUT => OUTPUT,
p_USER=> USER,
) ;
DBMS_OUTPUT.PUT_LINE('ID | Title | ViewCount | Votes');
LOOP
FETCH OUTPUT
INTO R_OUTPUT;
DBMS_OUTPUT.PUT_LINE(R_OUTPUT.QUESTIONID || '|' || R_OUTPUT.TITLE
'|' || R_OUTPUT.VIEWCOUNT '|' || R_OUTPUT.VOTES);
recordCount := recordCount+1;
EXIT WHEN OUTPUT % NOTFOUND;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Record Count:'||recordCount);
CLOSE OUTPUT;
END;
यह outputs ऐसा करने के लिए और आउटपुट बदसूरत है। यदि बहुत सारे कॉलम हैं और/या डेटा संख्यात्मक है तो इसका विस्तार हुआ है।
क्या इस बारे में मेरे लिए अजीब है कि अगर मैं या तो SQL डेवलपर या प्रबंधन स्टूडियो में इस बयान ...
SELECT
ID,
Title,
ViewCount,
Votes
FROM votes where user = 'OMG Ponies'
लिखने परिणाम काफी समान हैं। इससे मुझे ऐसा लगता है कि मैं या तो एक तकनीक खो रहा हूं या गलत उपकरण का उपयोग कर रहा हूं।
SQL सर्वर संस्करण शायद कोई फ़ंक्शन नहीं है। SQL सर्वर में, संग्रहित प्रक्रियाएं जो परिणामों की तरह सेट की गई हैं, केवल 'चयन' कथन हैं जो कर्सर से बंधे नहीं हैं। ऐसी संग्रहीत प्रक्रिया के निष्पादन के परिणाम प्राप्त करना क्लाइंट पक्ष पर 'चयन' क्वेरी से परिणाम प्राप्त करने जैसा ही है। –
मुझे एक दिन SQL सर्वर के बारे में जानना चाहिए। ऐसा लगता है कि समकक्ष एक ऐसा फ़ंक्शन होगा जो एक 'आउटपुट पैरामीटर' की प्रक्रिया के बजाए एक रिफर्सर देता है, इसलिए इसका उपयोग एसक्यूएल एसक्यूएल से एक क्वेरी में किया जा सकता है? –
MyPackage.GetQuestions एक प्रक्रिया है। जैसे प्रक्रिया GETQUETSIONS (आउटपुट में MyPACKAGE.refcur_question, उपयोगकर्ता VARCHAR2 में)। जब मैंने आपकी तकनीक को बांध लिया तो मुझे अमान्य पहचानकर्ता त्रुटियां मिलीं –