PHP में कर्सर के साथ काम करने के लिए, SELECT
से सीधे पंक्तियों तक पहुँचने की तुलना में तीन अतिरिक्त चरणों की आवश्यकता होती है बयान।
- पहला चरण PHP में
oci_new_cursor()
का उपयोग करके एक कर्सर संसाधन तैयार कर रहा है फ़ंक्शन, जिसे आप तब उपयुक्त पैरामीटर से बाइंड करने के लिए उपयोग करते हैं। - दूसरा चरण
oci_bind_by_name()
पर एक पैरामीटर जोड़ना है समारोह - सामान्य SQL कथन निष्पादित करने के बाद तीसरा चरण,
oci_execute()
को कॉल कर रहा है कर्सर संसाधन पर।
कोड:
//Connection does not change
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = JXYX.com)(PORT = 1521)))(CONNECT_DATA=(SID=DHSJKS)))";
$conn = ocilogon("XXXXXX","XXXXXXXX",$db);
//Request does not change
$sql = 'BEGIN SP_GET_MY_DATA(:POP, :SEG, :DUR, :VIEW, :PAGE, :OUTPUT_CUR); END;';
//Statement does not change
$stmt = oci_parse($conn,$sql);
oci_bind_by_name($stmt,':POP',$pop);
oci_bind_by_name($stmt,':SEG',$seg);
oci_bind_by_name($stmt,':DUR',$dur);
oci_bind_by_name($stmt,':VIEW',$view);
oci_bind_by_name($stmt,':PAGE',$page);
//But BEFORE statement, Create your cursor
$cursor = oci_new_cursor($conn)
// On your code add the latest parameter to bind the cursor resource to the Oracle argument
oci_bind_by_name($stmt,":OUTPUT_CUR", $cursor,-1,OCI_B_CURSOR);
// Execute the statement as in your first try
oci_execute($stmt);
// and now, execute the cursor
oci_execute($cursor);
// Use OCIFetchinto in the same way as you would with SELECT
while ($data = oci_fetch_assoc($cursor, OCI_RETURN_LOBS )) {
print_r($data);
}
मैं ओरेकल (और अंग्रेजी) के साथ बहुत धाराप्रवाह नहीं हूं इसलिए आपको पढ़ना चाहिए यह ट्यूटोरियल . एक दिलचस्प उदाहरण है, संग्रहीत कार्यविधियां और संदर्भ कर्सर देखें अध्याय!
आशा है कि यह मदद करेगा!