इस विशेष मामले में, जैसा कि उल्लेख किया गया है, अनुक्रम सही समाधान है। लेकिन अगर किसी भविष्य की स्थिति में आपको कुछ अपडेट करने और एक ही स्टेटमेंट में एक मान वापस करने की आवश्यकता है, तो आप RETURNING
का उपयोग कर सकते हैं खंड:
UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?
यदि कॉलिंग कोड PL/SQL है, तो ? स्थानीय पीएल/एसक्यूएल चर के साथ; अन्यथा आप इसे अपने प्रोग्राम में आउटपुट पैरामीटर के रूप में बाँध सकते हैं।
संपादित करें:चूंकि आपने पर्ल का उल्लेख किया है, इस तरह कुछ काम करना चाहिए (अवांछित):
my $sth = $dbh->prepare('UPDATE mytable SET idnext = idnext + 1 returning idnext into ?');
my $idnext;
$sth->bind_param_inout(1, \$idnext, 8);
$sth->execute; # now $idnext should contain the value
देखें DBI ।