@ ग्लेन के दृष्टिकोण के समान, लेकिन आप SQL * प्लस में एक बाइंड वैरिएबल घोषित कर सकते हैं और इसे एक सादे SQL क्वेरी में उपयोग कर सकते हैं। पहले इसे var[iable]<के साथ घोषित करें /कोड>
आदेश:
variable comment_id number;
फिर इसे exec[ute]<के साथ सेट करें /कोड>
कमांड, जो अनिवार्य रूप से एक अनाम ब्लॉक है:
execute :comment_id := 3052753;
फिर अपनी मूल क्वेरी :comment_id
. के साथ चलाएँ संदर्भ, और कोई BEGIN
. नहीं या END
:
select e.label as doc_name,
e.url,
i.item_id,
'multi' as form_type
from cr_items i, cr_extlinks e
where i.parent_id = :comment_id
and e.extlink_id = i.item_id
UNION
select null as doc_name,
utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(r.content, 2000, 1)) as url,
r.item_id,
'single' as form_type
from cr_revisions r
where r.revision_id = ( select content_item.get_latest_revision(:comment_id) from dual);
मुझे नहीं लगता कि व्यक्तिगत वरीयता से परे दो दृष्टिकोणों के बीच बहुत कार्यात्मक अंतर है, और दोनों SQL डेवलपर में भी काम करते हैं (जब एक स्क्रिप्ट के रूप में चलाया जाता है)। मुझे यह आसान लगता है जब SQL को एक प्रो*सी फ़ाइल से कॉपी किया जाता है जो पहले से ही :
. का उपयोग करती है बाइंड फॉर्म, विशुद्ध रूप से क्योंकि आपको कोड को बिल्कुल भी संशोधित करने की आवश्यकता नहीं है।
संयोग से, आप लिख सकते हैं:
where r.revision_id = ( select content_item.get_latest_revision(:comment_id) from dual)
बिना अतिरिक्त चुनें
, के रूप में:
where r.revision_id = content_item.get_latest_revision(:comment_id)