एक फ़ंक्शन जो DML करता है उसे SELECT
. में नहीं बुलाया जा सकता है कॉलिंग भाषा की परवाह किए बिना बयान।
यदि आप डीएमएल करना चाहते हैं और एक मूल्य वापस करना चाहते हैं, तो यह एक OUT
के साथ एक संग्रहीत कार्यविधि बनाने के लिए अधिक समझ में आता है फ़ंक्शन का उपयोग करने के बजाय पैरामीटर। तो यह बहुत अधिक अर्थपूर्ण होगा
CREATE OR REPLACE PROCEDURE proc_name_return( p_1 IN NUMBER,
p_2 IN NUMBER,
p_ret OUT VARCHAR2 )
AS
BEGIN
p_ret := pkg_tools.replace.site( p_1, p_2 );
END;
और फिर उस संग्रहीत कार्यविधि को PHP से कॉल करें
$sql = 'BEGIN proc_name_return( :p_1, :p_2, :p_ret ); END;';
यदि आप ऐसा नहीं करना चाहते हैं, तो मेरा अनुमान है कि आप ऐसा कुछ भी कर सकते हैं (अंडरग्राउंड PHP और Oracle मैन्युअल )
<?php
$c = oci_connect('hr', 'hrpwd', 'localhost/XE');
$s = oci_parse($c, "begin :ret :=pkg_tools.replace_site(1121,3343); end;");
oci_bind_by_name($s, ':ret', $r, 200);
oci_execute($s);
echo "Result is: ".$r;
?>