Oracle
 sql >> база данни >  >> RDS >> Oracle

Мога ли да върна стойности на PHP от анонимен PL/SQL блок?

Вие дефинирате изходящ параметър, като използвате ключовата дума OUT между името и декларацията за тип данни. IE:

CREATE OR REPLACE PROCEDURE blah (OUT_PARAM_EXAMPLE OUT VARCHAR2) IS ...

Ако не е посочено, IN е по подразбиране. Ако искате да използвате параметър като in и out, използвайте:

CREATE OR REPLACE PROCEDURE blah (INOUT_PARAM_EXAMPLE IN OUT VARCHAR2) IS ...

Следващият пример създава процедура с IN и OUT параметри. След това процедурата се изпълнява и резултатите се отпечатват.

<?php
   // Connect to database...
   $c = oci_connect("hr", "hr_password", "localhost/XE");
   if (!$c) {
      echo "Unable to connect: " . var_dump( oci_error() );
      die();
   }

   // Create database procedure...
   $s = oci_parse($c, "create procedure proc1(p1 IN number, p2 OUT number) as " .
                     "begin" .
                     "  p2 := p1 + 10;" .
                     "end;");
   oci_execute($s, OCI_DEFAULT);

   // Call database procedure...
   $in_var = 10;
   $s = oci_parse($c, "begin proc1(:bind1, :bind2); end;");
   oci_bind_by_name($s, ":bind1", $in_var);
   oci_bind_by_name($s, ":bind2", $out_var, 32); // 32 is the return length
   oci_execute($s, OCI_DEFAULT);
   echo "Procedure returned value: " . $out_var;

   // Logoff from Oracle...
   oci_free_statement($s);
   oci_close($c);
 ?>

Справка:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберете броя на цифрите на числото на оракула

  2. изпълнение на незабавна промяна последователност не работи

  3. Защо получавам ORA-00932:непоследователни типове данни:очаквано - получено - когато използвам COLLECT() в подготвен израз?

  4. Вмъкване на дати преди 1950 г. в Oracle

  5. как да предам име на таблица като параметър на съхранената процедура?