Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

PHP से Oracle संग्रहीत कार्यविधि को कॉल करें

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);
}

मैं ओरेकल (और अंग्रेजी) के साथ बहुत धाराप्रवाह नहीं हूं इसलिए आपको पढ़ना चाहिए यह ट्यूटोरियल . एक दिलचस्प उदाहरण है, संग्रहीत कार्यविधियां और संदर्भ कर्सर देखें अध्याय!

आशा है कि यह मदद करेगा!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक सम्मिलित SQL oracle

  2. Oracle तालिका 2 में सम्मिलित करें, फिर तालिका 1 से हटाएं, विफल होने पर अपवाद

  3. क्या मुझे getString () के बजाय JDBC getNString () का उपयोग करना चाहिए?

  4. Oracle में उच्चतम मूल्य के साथ रिकॉर्ड कैसे प्रदर्शित करें?

  5. Oracle क्लॉब कॉलम में किसी विशेष स्ट्रिंग की खोज करें